From 451da10fd20023e629bbfe390becaf9ab6708376 Mon Sep 17 00:00:00 2001 From: grafixeyehero <32230989+grafixeyehero@users.noreply.github.com> Date: Fri, 11 Jun 2021 03:32:34 +0300 Subject: [PATCH 01/10] initial --- src/scripts/clientUtils.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index 4de4d9113e..8fc02934dc 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -6,6 +6,10 @@ import baseAlert from '../components/alert'; import baseConfirm from '../components/confirm/confirm'; import globalize from '../scripts/globalize'; import * as webSettings from './settings/webSettings'; +import datetime from '../scripts/datetime'; +import directorybrowser from '../components/directorybrowser/directorybrowser'; +import dialogHelper from '../components/dialogHelper/dialogHelper'; +import { Events } from 'jellyfin-apiclient'; export function getCurrentUser() { return window.ApiClient.getCurrentUser(false); @@ -210,7 +214,11 @@ const Dashboard = { processServerConfigurationUpdateResult, selectServer, serverAddress, - showLoadingMsg + showLoadingMsg, + datetime, + Events, + directorybrowser, + dialogHelper }; // This is used in plugins and templates, so keep it defined for now. From 005ed2876d0cea310ce5ad449d2caef049f63de4 Mon Sep 17 00:00:00 2001 From: grafixeyehero <32230989+grafixeyehero@users.noreply.github.com> Date: Fri, 11 Jun 2021 20:16:11 +0300 Subject: [PATCH 02/10] access ServerNotifications globally --- .eslintrc.js | 1 + src/scripts/serverNotifications.js | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.eslintrc.js b/.eslintrc.js index b684293fa3..f232a48ba4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -96,6 +96,7 @@ module.exports = { 'Loading': 'writable', 'MetadataEditor': 'writable', 'PlaylistViewer': 'writable', + 'ServerNotifications': 'writable', 'UserParentalControlPage': 'writable', 'Windows': 'readonly' }, diff --git a/src/scripts/serverNotifications.js b/src/scripts/serverNotifications.js index c7fda8a12e..e4395c9c29 100644 --- a/src/scripts/serverNotifications.js +++ b/src/scripts/serverNotifications.js @@ -211,4 +211,6 @@ Events.on(ServerConnections, 'apiclientcreated', function (e, newApiClient) { bindEvents(newApiClient); }); +window.ServerNotifications = serverNotifications; + export default serverNotifications; From 1bec6a808875b1baa36397e18fad0d9ea29d337b Mon Sep 17 00:00:00 2001 From: grafixeyehero <32230989+grafixeyehero@users.noreply.github.com> Date: Fri, 11 Jun 2021 20:29:07 +0300 Subject: [PATCH 03/10] Refactor DirectoryBrowser class --- .../directorybrowser/directorybrowser.js | 122 +++++++++--------- .../mediaLibraryCreator.js | 4 +- .../mediaLibraryEditor/mediaLibraryEditor.js | 4 +- src/components/tvproviders/xmltv.js | 4 +- src/controllers/dashboard/encodingsettings.js | 12 +- src/controllers/dashboard/general.js | 8 +- src/controllers/dashboard/networking.js | 4 +- src/controllers/livetvsettings.js | 16 +-- src/controllers/livetvtuner.js | 4 +- src/scripts/clientUtils.js | 4 +- 10 files changed, 91 insertions(+), 91 deletions(-) diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index 2d53da67ed..76c65dce96 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -243,70 +243,70 @@ import alert from '../alert'; } } - class directoryBrowser { - constructor() { - let currentDialog; - this.show = options => { - options = options || {}; - const fileOptions = { - includeDirectories: true - }; - if (options.includeDirectories != null) { - fileOptions.includeDirectories = options.includeDirectories; - } - if (options.includeFiles != null) { - fileOptions.includeFiles = options.includeFiles; - } - Promise.all([getSystemInfo(), getDefaultPath(options)]).then( - responses => { - const systemInfo = responses[0]; - const initialPath = responses[1]; - const dlg = dialogHelper.createDialog({ - size: 'small', - removeOnClose: true, - scrollY: false - }); - dlg.classList.add('ui-body-a'); - dlg.classList.add('background-theme-a'); - dlg.classList.add('directoryPicker'); - dlg.classList.add('formDialog'); + let systemInfo; + class DirectoryBrowser { + currentDialog; + constructor() {} - let html = ''; - html += '
'; - html += ''; - html += '

'; - html += options.header || globalize.translate('HeaderSelectPath'); - html += '

'; - html += '
'; - html += getEditorHtml(options, systemInfo); - dlg.innerHTML = html; - initEditor(dlg, options, fileOptions); - dlg.addEventListener('close', onDialogClosed); - dialogHelper.open(dlg); - dlg.querySelector('.btnCloseDialog').addEventListener('click', () => { - dialogHelper.close(dlg); - }); - currentDialog = dlg; - dlg.querySelector('#txtDirectoryPickerPath').value = initialPath; - const txtNetworkPath = dlg.querySelector('#txtNetworkPath'); - if (txtNetworkPath) { - txtNetworkPath.value = options.networkSharePath || ''; - } - if (!options.pathReadOnly) { - refreshDirectoryBrowser(dlg, initialPath, fileOptions, true); - } + show = options => { + options = options || {}; + const fileOptions = { + includeDirectories: true + }; + if (options.includeDirectories != null) { + fileOptions.includeDirectories = options.includeDirectories; + } + if (options.includeFiles != null) { + fileOptions.includeFiles = options.includeFiles; + } + Promise.all([getSystemInfo(), getDefaultPath(options)]).then( + responses => { + const systemInfo = responses[0]; + const initialPath = responses[1]; + const dlg = dialogHelper.createDialog({ + size: 'small', + removeOnClose: true, + scrollY: false + }); + dlg.classList.add('ui-body-a'); + dlg.classList.add('background-theme-a'); + dlg.classList.add('directoryPicker'); + dlg.classList.add('formDialog'); + + let html = ''; + html += '
'; + html += ''; + html += '

'; + html += options.header || globalize.translate('HeaderSelectPath'); + html += '

'; + html += '
'; + html += getEditorHtml(options, systemInfo); + dlg.innerHTML = html; + initEditor(dlg, options, fileOptions); + dlg.addEventListener('close', onDialogClosed); + dialogHelper.open(dlg); + dlg.querySelector('.btnCloseDialog').addEventListener('click', () => { + dialogHelper.close(dlg); + }); + this.currentDialog = dlg; + dlg.querySelector('#txtDirectoryPickerPath').value = initialPath; + const txtNetworkPath = dlg.querySelector('#txtNetworkPath'); + if (txtNetworkPath) { + txtNetworkPath.value = options.networkSharePath || ''; + } + if (!options.pathReadOnly) { + refreshDirectoryBrowser(dlg, initialPath, fileOptions, true); } - ); - }; - this.close = () => { - if (currentDialog) { - dialogHelper.close(currentDialog); } - }; - } + ); + }; + + close = () => { + if (this.currentDialog) { + dialogHelper.close(this.currentDialog); + } + }; } - let systemInfo; - /* eslint-enable indent */ -export default directoryBrowser; +export {DirectoryBrowser}; diff --git a/src/components/mediaLibraryCreator/mediaLibraryCreator.js b/src/components/mediaLibraryCreator/mediaLibraryCreator.js index ffccd8e933..66827c4fbe 100644 --- a/src/components/mediaLibraryCreator/mediaLibraryCreator.js +++ b/src/components/mediaLibraryCreator/mediaLibraryCreator.js @@ -102,8 +102,8 @@ import template from './mediaLibraryCreator.template.html'; function onAddButtonClick() { const page = dom.parentWithClass(this, 'dlg-librarycreator'); - import('../directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ enableNetworkSharePath: true, callback: function (path, networkSharePath) { diff --git a/src/components/mediaLibraryEditor/mediaLibraryEditor.js b/src/components/mediaLibraryEditor/mediaLibraryEditor.js index cfd1955c7b..496843226d 100644 --- a/src/components/mediaLibraryEditor/mediaLibraryEditor.js +++ b/src/components/mediaLibraryEditor/mediaLibraryEditor.js @@ -162,8 +162,8 @@ import template from './mediaLibraryEditor.template.html'; } function showDirectoryBrowser(context, originalPath, networkPath) { - import('../directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ enableNetworkSharePath: true, pathReadOnly: originalPath != null, diff --git a/src/components/tvproviders/xmltv.js b/src/components/tvproviders/xmltv.js index 853f9975cb..44d08a3d71 100644 --- a/src/components/tvproviders/xmltv.js +++ b/src/components/tvproviders/xmltv.js @@ -145,8 +145,8 @@ export default function (page, providerId, options) { function onSelectPathClick(e) { const page = $(e.target).parents('.xmltvForm')[0]; - import('../directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js index 88f1e975cd..92080c8775 100644 --- a/src/controllers/dashboard/encodingsettings.js +++ b/src/controllers/dashboard/encodingsettings.js @@ -217,8 +217,8 @@ import alert from '../../components/alert'; setDecodingCodecsVisible(page, this.value); }); $('#btnSelectEncoderPath', page).on('click.selectDirectory', function () { - import('../../components/directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../../components/directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { @@ -232,8 +232,8 @@ import alert from '../../components/alert'; }); }); $('#btnSelectTranscodingTempPath', page).on('click.selectDirectory', function () { - import('../../components/directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../../components/directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -249,8 +249,8 @@ import alert from '../../components/alert'; }); }); $('#btnSelectFallbackFontPath', page).on('click.selectDirectory', function () { - import('../../components/directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../../components/directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ includeDirectories: true, callback: function (path) { diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index d919dbf119..e70aa5f256 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -53,8 +53,8 @@ import alert from '../../components/alert'; const brandingConfigKey = 'branding'; export default function (view) { $('#btnSelectCachePath', view).on('click.selectDirectory', function () { - import('../../components/directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../../components/directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -70,8 +70,8 @@ import alert from '../../components/alert'; }); }); $('#btnSelectMetadataPath', view).on('click.selectDirectory', function () { - import('../../components/directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../../components/directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ path: $('#txtMetadataPath', view).val(), networkSharePath: $('#txtMetadataNetworkPath', view).val(), diff --git a/src/controllers/dashboard/networking.js b/src/controllers/dashboard/networking.js index 5cfab50938..2c9f07dec1 100644 --- a/src/controllers/dashboard/networking.js +++ b/src/controllers/dashboard/networking.js @@ -181,8 +181,8 @@ import alert from '../../components/alert'; } }); view.querySelector('#btnSelectCertPath').addEventListener('click', function () { - import('../../components/directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../../components/directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ includeFiles: true, includeDirectories: true, diff --git a/src/controllers/livetvsettings.js b/src/controllers/livetvsettings.js index 4bc7d11283..e30ad87682 100644 --- a/src/controllers/livetvsettings.js +++ b/src/controllers/livetvsettings.js @@ -60,8 +60,8 @@ $(document).on('pageinit', '#liveTvSettingsPage', function () { const page = this; $('.liveTvSettingsForm').off('submit', onSubmit).on('submit', onSubmit); $('#btnSelectRecordingPath', page).on('click.selectDirectory', function () { - import('../components/directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../components/directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -75,8 +75,8 @@ $(document).on('pageinit', '#liveTvSettingsPage', function () { }); }); $('#btnSelectMovieRecordingPath', page).on('click.selectDirectory', function () { - import('../components/directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../components/directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -90,8 +90,8 @@ $(document).on('pageinit', '#liveTvSettingsPage', function () { }); }); $('#btnSelectSeriesRecordingPath', page).on('click.selectDirectory', function () { - import('../components/directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../components/directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -105,8 +105,8 @@ $(document).on('pageinit', '#liveTvSettingsPage', function () { }); }); $('#btnSelectPostProcessorPath', page).on('click.selectDirectory', function () { - import('../components/directorybrowser/directorybrowser').then(({default: directoryBrowser}) => { - const picker = new directoryBrowser(); + import('../components/directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { diff --git a/src/controllers/livetvtuner.js b/src/controllers/livetvtuner.js index 261fbae345..4f7adb529a 100644 --- a/src/controllers/livetvtuner.js +++ b/src/controllers/livetvtuner.js @@ -212,8 +212,8 @@ export default function (view, params) { }); }); view.querySelector('.btnSelectPath').addEventListener('click', function () { - import('../components/directorybrowser/directorybrowser').then(({default: directorybrowser}) => { - const picker = new directorybrowser(); + import('../components/directorybrowser/directorybrowser').then((Module) => { + const picker = new Module.DirectoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index 8fc02934dc..93e5feb682 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -7,7 +7,7 @@ import baseConfirm from '../components/confirm/confirm'; import globalize from '../scripts/globalize'; import * as webSettings from './settings/webSettings'; import datetime from '../scripts/datetime'; -import directorybrowser from '../components/directorybrowser/directorybrowser'; +import { DirectoryBrowser } from '../components/directorybrowser/directorybrowser'; import dialogHelper from '../components/dialogHelper/dialogHelper'; import { Events } from 'jellyfin-apiclient'; @@ -217,7 +217,7 @@ const Dashboard = { showLoadingMsg, datetime, Events, - directorybrowser, + DirectoryBrowser, dialogHelper }; From b7c6a8aa1843a1388174fefc038694c9e54f3f1b Mon Sep 17 00:00:00 2001 From: grafixeyehero <32230989+grafixeyehero@users.noreply.github.com> Date: Fri, 11 Jun 2021 23:59:57 +0300 Subject: [PATCH 04/10] add itemIdentifier on clientutils and TaskButton globally --- .eslintrc.js | 1 + src/scripts/clientUtils.js | 4 +++- src/scripts/taskbutton.js | 5 ++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index f232a48ba4..b86f32b4f1 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -97,6 +97,7 @@ module.exports = { 'MetadataEditor': 'writable', 'PlaylistViewer': 'writable', 'ServerNotifications': 'writable', + 'TaskButton': 'writable', 'UserParentalControlPage': 'writable', 'Windows': 'readonly' }, diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index 93e5feb682..72256c18e0 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -9,6 +9,7 @@ import * as webSettings from './settings/webSettings'; import datetime from '../scripts/datetime'; import { DirectoryBrowser } from '../components/directorybrowser/directorybrowser'; import dialogHelper from '../components/dialogHelper/dialogHelper'; +import itemIdentifier from '../components/itemidentifier/itemidentifier'; import { Events } from 'jellyfin-apiclient'; export function getCurrentUser() { @@ -218,7 +219,8 @@ const Dashboard = { datetime, Events, DirectoryBrowser, - dialogHelper + dialogHelper, + itemIdentifier }; // This is used in plugins and templates, so keep it defined for now. diff --git a/src/scripts/taskbutton.js b/src/scripts/taskbutton.js index bd08463e0d..05a8010662 100644 --- a/src/scripts/taskbutton.js +++ b/src/scripts/taskbutton.js @@ -5,7 +5,7 @@ import globalize from '../scripts/globalize'; import '../elements/emby-button/emby-button'; import ServerConnections from '../components/ServerConnections'; -export default function (options) { +function taskbutton(options) { function pollTasks() { ServerConnections.getApiClient(serverId).getScheduledTasks({ IsEnabled: true @@ -120,3 +120,6 @@ export default function (options) { Events.on(serverNotifications, 'ScheduledTasksInfo', onScheduledTasksUpdate); } } + +window.TaskButton = taskbutton; +export default taskbutton; From ac1de0de93bf01a70acedf55940b0e18f1122499 Mon Sep 17 00:00:00 2001 From: grafixeyehero <32230989+grafixeyehero@users.noreply.github.com> Date: Mon, 14 Jun 2021 02:21:15 +0300 Subject: [PATCH 05/10] add getConfigurationResourceUrl --- src/scripts/clientUtils.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index 72256c18e0..694b889457 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -94,6 +94,12 @@ export function getPluginUrl(name) { return 'configurationpage?name=' + encodeURIComponent(name); } +export function getConfigurationResourceUrl(name) { + return ApiClient.getUrl('web/ConfigurationPage', { + name: name + }); +} + export function navigate(url, preserveQueryString) { if (!url) { throw new Error('url cannot be null or empty'); @@ -204,6 +210,7 @@ const Dashboard = { capabilities, confirm, getPluginUrl, + getConfigurationResourceUrl, getCurrentUser, getCurrentUserId, hideLoadingMsg, From 4062544e5095f113b0b9071f792d33190efabee1 Mon Sep 17 00:00:00 2001 From: grafixeyehero <32230989+grafixeyehero@users.noreply.github.com> Date: Mon, 14 Jun 2021 03:16:44 +0300 Subject: [PATCH 06/10] add events globally --- .eslintrc.js | 1 + 1 file changed, 1 insertion(+) diff --git a/.eslintrc.js b/.eslintrc.js index b86f32b4f1..db6cfc4909 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -81,6 +81,7 @@ module.exports = { 'jQuery': 'readonly', // Jellyfin globals 'ApiClient': 'writable', + 'events': 'writable', 'chrome': 'writable', 'DlnaProfilePage': 'writable', 'DashboardPage': 'writable', From d0f6faea117e6987e878bceba41f93b58ebea28d Mon Sep 17 00:00:00 2001 From: grafixeyehero <32230989+grafixeyehero@users.noreply.github.com> Date: Mon, 14 Jun 2021 03:19:22 +0300 Subject: [PATCH 07/10] register on app init --- src/scripts/clientUtils.js | 2 -- src/scripts/site.js | 5 +++++ src/scripts/taskbutton.js | 1 - 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index 694b889457..f5e41887bf 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -10,7 +10,6 @@ import datetime from '../scripts/datetime'; import { DirectoryBrowser } from '../components/directorybrowser/directorybrowser'; import dialogHelper from '../components/dialogHelper/dialogHelper'; import itemIdentifier from '../components/itemidentifier/itemidentifier'; -import { Events } from 'jellyfin-apiclient'; export function getCurrentUser() { return window.ApiClient.getCurrentUser(false); @@ -224,7 +223,6 @@ const Dashboard = { serverAddress, showLoadingMsg, datetime, - Events, DirectoryBrowser, dialogHelper, itemIdentifier diff --git a/src/scripts/site.js b/src/scripts/site.js index 2b8e110d32..b55fdb80b2 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -36,6 +36,7 @@ import { playbackManager } from '../components/playback/playbackmanager'; import SyncPlayNoActivePlayer from '../components/syncPlay/ui/players/NoActivePlayer'; import SyncPlayHtmlVideoPlayer from '../components/syncPlay/ui/players/HtmlVideoPlayer'; import SyncPlayHtmlAudioPlayer from '../components/syncPlay/ui/players/HtmlAudioPlayer'; +import taskButton from '../scripts/taskbutton'; // TODO: Move this elsewhere window.getWindowLocationSearch = function(win) { @@ -82,6 +83,10 @@ function loadCoreDictionary() { } function init() { + // This is used in plugins + window.events = Events; + window.TaskButton = taskButton; + serverAddress().then(server => { if (server) { ServerConnections.initApiClient(server); diff --git a/src/scripts/taskbutton.js b/src/scripts/taskbutton.js index 05a8010662..7e80760898 100644 --- a/src/scripts/taskbutton.js +++ b/src/scripts/taskbutton.js @@ -121,5 +121,4 @@ function taskbutton(options) { } } -window.TaskButton = taskbutton; export default taskbutton; From d6c00aa6f40efbf41e0acd6c6398b6f356b787e5 Mon Sep 17 00:00:00 2001 From: grafixeyehero <32230989+grafixeyehero@users.noreply.github.com> Date: Wed, 8 Sep 2021 02:46:43 +0300 Subject: [PATCH 08/10] update suggestion change --- .eslintrc.js | 2 +- .../directorybrowser/directorybrowser.js | 2 +- .../mediaLibraryCreator/mediaLibraryCreator.js | 4 ++-- .../mediaLibraryEditor/mediaLibraryEditor.js | 4 ++-- src/components/tvproviders/xmltv.js | 4 ++-- src/controllers/dashboard/encodingsettings.js | 12 ++++++------ src/controllers/dashboard/general.js | 8 ++++---- src/controllers/dashboard/networking.js | 4 ++-- src/controllers/livetvsettings.js | 16 ++++++++-------- src/controllers/livetvtuner.js | 4 ++-- src/scripts/clientUtils.js | 2 +- src/scripts/site.js | 2 +- 12 files changed, 32 insertions(+), 32 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 8daed2940a..2851fd803f 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -100,7 +100,7 @@ module.exports = { 'jQuery': 'readonly', // Jellyfin globals 'ApiClient': 'writable', - 'events': 'writable', + 'Events': 'writable', 'chrome': 'writable', 'DlnaProfilePage': 'writable', 'DashboardPage': 'writable', diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index 76c65dce96..b10c9b8805 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -309,4 +309,4 @@ import alert from '../alert'; } /* eslint-enable indent */ -export {DirectoryBrowser}; +export default DirectoryBrowser; diff --git a/src/components/mediaLibraryCreator/mediaLibraryCreator.js b/src/components/mediaLibraryCreator/mediaLibraryCreator.js index 66827c4fbe..72795f66f1 100644 --- a/src/components/mediaLibraryCreator/mediaLibraryCreator.js +++ b/src/components/mediaLibraryCreator/mediaLibraryCreator.js @@ -102,8 +102,8 @@ import template from './mediaLibraryCreator.template.html'; function onAddButtonClick() { const page = dom.parentWithClass(this, 'dlg-librarycreator'); - import('../directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ enableNetworkSharePath: true, callback: function (path, networkSharePath) { diff --git a/src/components/mediaLibraryEditor/mediaLibraryEditor.js b/src/components/mediaLibraryEditor/mediaLibraryEditor.js index 496843226d..dcb418f806 100644 --- a/src/components/mediaLibraryEditor/mediaLibraryEditor.js +++ b/src/components/mediaLibraryEditor/mediaLibraryEditor.js @@ -162,8 +162,8 @@ import template from './mediaLibraryEditor.template.html'; } function showDirectoryBrowser(context, originalPath, networkPath) { - import('../directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ enableNetworkSharePath: true, pathReadOnly: originalPath != null, diff --git a/src/components/tvproviders/xmltv.js b/src/components/tvproviders/xmltv.js index 44d08a3d71..1f782b3607 100644 --- a/src/components/tvproviders/xmltv.js +++ b/src/components/tvproviders/xmltv.js @@ -145,8 +145,8 @@ export default function (page, providerId, options) { function onSelectPathClick(e) { const page = $(e.target).parents('.xmltvForm')[0]; - import('../directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js index 92080c8775..97afb430a0 100644 --- a/src/controllers/dashboard/encodingsettings.js +++ b/src/controllers/dashboard/encodingsettings.js @@ -217,8 +217,8 @@ import alert from '../../components/alert'; setDecodingCodecsVisible(page, this.value); }); $('#btnSelectEncoderPath', page).on('click.selectDirectory', function () { - import('../../components/directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../../components/directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { @@ -232,8 +232,8 @@ import alert from '../../components/alert'; }); }); $('#btnSelectTranscodingTempPath', page).on('click.selectDirectory', function () { - import('../../components/directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../../components/directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -249,8 +249,8 @@ import alert from '../../components/alert'; }); }); $('#btnSelectFallbackFontPath', page).on('click.selectDirectory', function () { - import('../../components/directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../../components/directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ includeDirectories: true, callback: function (path) { diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index 313374c6c6..e14cceefa3 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -55,8 +55,8 @@ import alert from '../../components/alert'; const brandingConfigKey = 'branding'; export default function (view) { $('#btnSelectCachePath', view).on('click.selectDirectory', function () { - import('../../components/directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../../components/directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -72,8 +72,8 @@ import alert from '../../components/alert'; }); }); $('#btnSelectMetadataPath', view).on('click.selectDirectory', function () { - import('../../components/directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../../components/directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ path: $('#txtMetadataPath', view).val(), networkSharePath: $('#txtMetadataNetworkPath', view).val(), diff --git a/src/controllers/dashboard/networking.js b/src/controllers/dashboard/networking.js index 2c9f07dec1..61ce04ad0b 100644 --- a/src/controllers/dashboard/networking.js +++ b/src/controllers/dashboard/networking.js @@ -181,8 +181,8 @@ import alert from '../../components/alert'; } }); view.querySelector('#btnSelectCertPath').addEventListener('click', function () { - import('../../components/directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../../components/directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ includeFiles: true, includeDirectories: true, diff --git a/src/controllers/livetvsettings.js b/src/controllers/livetvsettings.js index e30ad87682..abaa1c0a37 100644 --- a/src/controllers/livetvsettings.js +++ b/src/controllers/livetvsettings.js @@ -60,8 +60,8 @@ $(document).on('pageinit', '#liveTvSettingsPage', function () { const page = this; $('.liveTvSettingsForm').off('submit', onSubmit).on('submit', onSubmit); $('#btnSelectRecordingPath', page).on('click.selectDirectory', function () { - import('../components/directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../components/directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -75,8 +75,8 @@ $(document).on('pageinit', '#liveTvSettingsPage', function () { }); }); $('#btnSelectMovieRecordingPath', page).on('click.selectDirectory', function () { - import('../components/directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../components/directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -90,8 +90,8 @@ $(document).on('pageinit', '#liveTvSettingsPage', function () { }); }); $('#btnSelectSeriesRecordingPath', page).on('click.selectDirectory', function () { - import('../components/directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../components/directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -105,8 +105,8 @@ $(document).on('pageinit', '#liveTvSettingsPage', function () { }); }); $('#btnSelectPostProcessorPath', page).on('click.selectDirectory', function () { - import('../components/directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../components/directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { diff --git a/src/controllers/livetvtuner.js b/src/controllers/livetvtuner.js index 4f7adb529a..4d2ecb738e 100644 --- a/src/controllers/livetvtuner.js +++ b/src/controllers/livetvtuner.js @@ -212,8 +212,8 @@ export default function (view, params) { }); }); view.querySelector('.btnSelectPath').addEventListener('click', function () { - import('../components/directorybrowser/directorybrowser').then((Module) => { - const picker = new Module.DirectoryBrowser(); + import('../components/directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index bd69140f55..b7e41a48dc 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -7,7 +7,7 @@ import baseConfirm from '../components/confirm/confirm'; import globalize from '../scripts/globalize'; import * as webSettings from './settings/webSettings'; import datetime from '../scripts/datetime'; -import { DirectoryBrowser } from '../components/directorybrowser/directorybrowser'; +import DirectoryBrowser from '../components/directorybrowser/directorybrowser'; import dialogHelper from '../components/dialogHelper/dialogHelper'; import itemIdentifier from '../components/itemidentifier/itemidentifier'; diff --git a/src/scripts/site.js b/src/scripts/site.js index 3b445f3070..232f29a167 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -85,7 +85,7 @@ function loadCoreDictionary() { function init() { // This is used in plugins - window.events = Events; + window.Events = Events; window.TaskButton = taskButton; serverAddress().then(server => { From 0cda86dfdd2a6ec53682ef9177454441a8926e1d Mon Sep 17 00:00:00 2001 From: grafixeyehero <32230989+grafixeyehero@users.noreply.github.com> Date: Wed, 8 Sep 2021 03:28:04 +0300 Subject: [PATCH 09/10] remove eslint-enable indent --- .../directorybrowser/directorybrowser.js | 433 +++++++++--------- 1 file changed, 215 insertions(+), 218 deletions(-) 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 += `
`; + html += '
'; + html += '
'; + html += name; + html += '
'; + html += '
'; + html += ''; + html += '
'; + return html; +} - page.querySelector('.results').scrollTop = 0; - page.querySelector('#txtDirectoryPickerPath').value = path || ''; +function getEditorHtml(options, systemInfo) { + let html = ''; + html += '
'; + html += '
'; + if (!options.pathReadOnly) { + const instruction = options.instruction ? `${options.instruction}

` : ''; + html += '
'; + html += instruction; + if (systemInfo.OperatingSystem.toLowerCase() === 'bsd') { + html += '
'; + html += '
'; + html += globalize.translate('MessageDirectoryPickerBSDInstruction'); + html += '
'; + } else if (systemInfo.OperatingSystem.toLowerCase() === 'linux') { + html += '
'; + html += '
'; + html += globalize.translate('MessageDirectoryPickerLinuxInstruction'); + html += '
'; + } + html += '
'; + } + html += '
'; + html += '
'; + html += '
'; + let labelKey; + if (options.includeFiles !== true) { + labelKey = 'LabelFolder'; + } else { + labelKey = 'LabelPath'; + } + const readOnlyAttribute = options.pathReadOnly ? ' readonly' : ''; + html += ``; + html += '
'; + if (!readOnlyAttribute) { + html += ``; + } + html += '
'; + if (!readOnlyAttribute) { + html += '
'; + } + if (options.enableNetworkSharePath) { + html += '
'; + html += ``; + html += '
'; + html += globalize.translate('LabelOptionalNetworkPathHelp', '\\\\server', '\\\\192.168.1.101'); + html += '
'; + html += '
'; + } + html += '
'; + html += ``; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += ''; - 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); + return html; +} + +function alertText(text) { + alertTextWithOptions({ + text: text + }); +} + +function alertTextWithOptions(options) { + alert(options); +} + +function validatePath(path, validateWriteable, apiClient) { + return apiClient.ajax({ + type: 'POST', + url: apiClient.getUrl('Environment/ValidatePath'), + data: JSON.stringify({ + ValidateWriteable: validateWriteable, + Path: path + }), + contentType: 'application/json' + }).catch(response => { + if (response) { + if (response.status === 404) { + alertText(globalize.translate('PathNotFound')); + return Promise.reject(); + } + if (response.status === 500) { + if (validateWriteable) { + alertText(globalize.translate('WriteAccessRequired')); + } else { + alertText(globalize.translate('PathNotFound')); } + return Promise.reject(); + } + } + return Promise.resolve(); + }); +} - if (!path) { - html += getItem('lnkPath lnkDirectory', '', 'Network', globalize.translate('ButtonNetwork')); - } +function initEditor(content, options, fileOptions) { + content.addEventListener('click', e => { + const lnkPath = dom.parentWithClass(e.target, 'lnkPath'); + if (lnkPath) { + const path = lnkPath.getAttribute('data-path'); + if (lnkPath.classList.contains('lnkFile')) { + content.querySelector('#txtDirectoryPickerPath').value = path; + } else { + refreshDirectoryBrowser(content, path, fileOptions, true); + } + } + }); - page.querySelector('.results').innerHTML = html; - loading.hide(); + content.addEventListener('click', e => { + if (dom.parentWithClass(e.target, 'btnRefreshDirectories')) { + const path = content.querySelector('#txtDirectoryPickerPath').value; + refreshDirectoryBrowser(content, path, fileOptions); + } + }); + + content.addEventListener('change', e => { + const txtDirectoryPickerPath = dom.parentWithTag(e.target, 'INPUT'); + if (txtDirectoryPickerPath && txtDirectoryPickerPath.id === 'txtDirectoryPickerPath') { + refreshDirectoryBrowser(content, txtDirectoryPickerPath.value, fileOptions); + } + }); + + content.querySelector('form').addEventListener('submit', function(e) { + if (options.callback) { + let networkSharePath = this.querySelector('#txtNetworkPath'); + networkSharePath = networkSharePath ? networkSharePath.value : null; + const path = this.querySelector('#txtDirectoryPickerPath').value; + validatePath(path, options.validateWriteable, ApiClient).then(options.callback(path, networkSharePath)); + } + e.preventDefault(); + e.stopPropagation(); + return false; + }); +} + +function getDefaultPath(options) { + if (options.path) { + return Promise.resolve(options.path); + } else { + return ApiClient.getJSON(ApiClient.getUrl('Environment/DefaultDirectoryBrowser')).then( + result => { + return result.Path || ''; }, () => { - if (updatePathOnError) { - page.querySelector('#txtDirectoryPickerPath').value = ''; - page.querySelector('.results').innerHTML = ''; - loading.hide(); - } + return ''; } ); } +} - function getItem(cssClass, type, path, name) { - let html = ''; - html += `
`; - html += '
'; - html += '
'; - html += name; - html += '
'; - html += '
'; - html += ''; - html += '
'; - return html; - } - - function getEditorHtml(options, systemInfo) { - let html = ''; - html += '
'; - html += '
'; - if (!options.pathReadOnly) { - const instruction = options.instruction ? `${options.instruction}

` : ''; - html += '
'; - html += instruction; - if (systemInfo.OperatingSystem.toLowerCase() === 'bsd') { - html += '
'; - html += '
'; - html += globalize.translate('MessageDirectoryPickerBSDInstruction'); - html += '
'; - } else if (systemInfo.OperatingSystem.toLowerCase() === 'linux') { - html += '
'; - html += '
'; - html += globalize.translate('MessageDirectoryPickerLinuxInstruction'); - html += '
'; - } - html += '
'; - } - html += '
'; - html += '
'; - html += '
'; - let labelKey; - if (options.includeFiles !== true) { - labelKey = 'LabelFolder'; - } else { - labelKey = 'LabelPath'; - } - const readOnlyAttribute = options.pathReadOnly ? ' readonly' : ''; - html += ``; - html += '
'; - if (!readOnlyAttribute) { - html += ``; - } - html += '
'; - if (!readOnlyAttribute) { - html += '
'; - } - if (options.enableNetworkSharePath) { - html += '
'; - html += ``; - html += '
'; - html += globalize.translate('LabelOptionalNetworkPathHelp', '\\\\server', '\\\\192.168.1.101'); - html += '
'; - html += '
'; - } - html += '
'; - html += ``; - html += '
'; - html += '
'; - html += '
'; - html += '
'; - html += ''; - - return html; - } - - function alertText(text) { - alertTextWithOptions({ - text: text - }); - } - - function alertTextWithOptions(options) { - alert(options); - } - - function validatePath(path, validateWriteable, apiClient) { - return apiClient.ajax({ - type: 'POST', - url: apiClient.getUrl('Environment/ValidatePath'), - data: JSON.stringify({ - ValidateWriteable: validateWriteable, - Path: path - }), - contentType: 'application/json' - }).catch(response => { - if (response) { - if (response.status === 404) { - alertText(globalize.translate('PathNotFound')); - return Promise.reject(); - } - if (response.status === 500) { - if (validateWriteable) { - alertText(globalize.translate('WriteAccessRequired')); - } else { - alertText(globalize.translate('PathNotFound')); - } - return Promise.reject(); - } - } - return Promise.resolve(); - }); - } - - function initEditor(content, options, fileOptions) { - content.addEventListener('click', e => { - const lnkPath = dom.parentWithClass(e.target, 'lnkPath'); - if (lnkPath) { - const path = lnkPath.getAttribute('data-path'); - if (lnkPath.classList.contains('lnkFile')) { - content.querySelector('#txtDirectoryPickerPath').value = path; - } else { - refreshDirectoryBrowser(content, path, fileOptions, true); - } - } - }); - - content.addEventListener('click', e => { - if (dom.parentWithClass(e.target, 'btnRefreshDirectories')) { - const path = content.querySelector('#txtDirectoryPickerPath').value; - refreshDirectoryBrowser(content, path, fileOptions); - } - }); - - content.addEventListener('change', e => { - const txtDirectoryPickerPath = dom.parentWithTag(e.target, 'INPUT'); - if (txtDirectoryPickerPath && txtDirectoryPickerPath.id === 'txtDirectoryPickerPath') { - refreshDirectoryBrowser(content, txtDirectoryPickerPath.value, fileOptions); - } - }); - - content.querySelector('form').addEventListener('submit', function(e) { - if (options.callback) { - let networkSharePath = this.querySelector('#txtNetworkPath'); - networkSharePath = networkSharePath ? networkSharePath.value : null; - const path = this.querySelector('#txtDirectoryPickerPath').value; - validatePath(path, options.validateWriteable, ApiClient).then(options.callback(path, networkSharePath)); - } - e.preventDefault(); - e.stopPropagation(); - return false; - }); - } - - function getDefaultPath(options) { - if (options.path) { - return Promise.resolve(options.path); - } else { - return ApiClient.getJSON(ApiClient.getUrl('Environment/DefaultDirectoryBrowser')).then( - result => { - return result.Path || ''; - }, () => { - return ''; - } - ); - } - } - - let systemInfo; - class DirectoryBrowser { +let systemInfo; +class DirectoryBrowser { currentDialog; constructor() {} @@ -306,7 +304,6 @@ import alert from '../alert'; dialogHelper.close(this.currentDialog); } }; - } +} -/* eslint-enable indent */ export default DirectoryBrowser; From 41808def906663f608ec0442e4a09b081930f4b7 Mon Sep 17 00:00:00 2001 From: grafixeyehero <32230989+grafixeyehero@users.noreply.github.com> Date: Wed, 8 Sep 2021 03:40:55 +0300 Subject: [PATCH 10/10] remove empty constructor. --- src/components/directorybrowser/directorybrowser.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index 1c9615e2f0..e918149ac9 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -244,7 +244,6 @@ function getDefaultPath(options) { let systemInfo; class DirectoryBrowser { currentDialog; - constructor() {} show = options => { options = options || {};