diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index b10c9b8805..1c9615e2f0 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -10,241 +10,239 @@ import '../formdialog.scss'; import '../../elements/emby-button/emby-button'; import alert from '../alert'; -/* eslint-disable indent */ - - function getSystemInfo() { - return systemInfo ? Promise.resolve(systemInfo) : ApiClient.getPublicSystemInfo().then( - info => { - systemInfo = info; - return info; - } - ); - } - - function onDialogClosed() { - loading.hide(); - } - - function refreshDirectoryBrowser(page, path, fileOptions, updatePathOnError) { - if (path && typeof path !== 'string') { - throw new Error('invalid path'); +function getSystemInfo() { + return systemInfo ? Promise.resolve(systemInfo) : ApiClient.getPublicSystemInfo().then( + info => { + systemInfo = info; + return info; } + ); +} - loading.show(); +function onDialogClosed() { + loading.hide(); +} - const promises = []; +function refreshDirectoryBrowser(page, path, fileOptions, updatePathOnError) { + if (path && typeof path !== 'string') { + throw new Error('invalid path'); + } - if (path === 'Network') { - promises.push(ApiClient.getNetworkDevices()); + loading.show(); + + const promises = []; + + if (path === 'Network') { + promises.push(ApiClient.getNetworkDevices()); + } else { + if (path) { + promises.push(ApiClient.getDirectoryContents(path, fileOptions)); + promises.push(ApiClient.getParentPath(path)); } else { + promises.push(ApiClient.getDrives()); + } + } + + Promise.all(promises).then( + responses => { + const folders = responses[0]; + const parentPath = responses[1] || ''; + let html = ''; + + page.querySelector('.results').scrollTop = 0; + page.querySelector('#txtDirectoryPickerPath').value = path || ''; + if (path) { - promises.push(ApiClient.getDirectoryContents(path, fileOptions)); - promises.push(ApiClient.getParentPath(path)); - } else { - promises.push(ApiClient.getDrives()); + html += getItem('lnkPath lnkDirectory', '', parentPath, '...'); + } + for (let i = 0, length = folders.length; i < length; i++) { + const folder = folders[i]; + const cssClass = folder.Type === 'File' ? 'lnkPath lnkFile' : 'lnkPath lnkDirectory'; + html += getItem(cssClass, folder.Type, folder.Path, folder.Name); + } + + if (!path) { + html += getItem('lnkPath lnkDirectory', '', 'Network', globalize.translate('ButtonNetwork')); + } + + page.querySelector('.results').innerHTML = html; + loading.hide(); + }, () => { + if (updatePathOnError) { + page.querySelector('#txtDirectoryPickerPath').value = ''; + page.querySelector('.results').innerHTML = ''; + loading.hide(); } } + ); +} - Promise.all(promises).then( - responses => { - const folders = responses[0]; - const parentPath = responses[1] || ''; - let html = ''; +function getItem(cssClass, type, path, name) { + let html = ''; + html += `