import loading from 'loading'; import dialogHelper from 'dialogHelper'; import dom from 'dom'; import globalize from 'globalize'; import 'listViewStyle'; import 'emby-input'; import 'paper-icon-button-light'; import 'css!./directorybrowser'; import 'formDialogStyle'; import 'emby-button'; /* 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'); } 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) { 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(); } } ); } function getItem(cssClass, type, path, name) { let html = ''; html += `