diff --git a/src/components/activitylog.js b/src/components/activitylog.js index 2346277a9a..78967b3a34 100644 --- a/src/components/activitylog.js +++ b/src/components/activitylog.js @@ -7,6 +7,7 @@ import serverNotifications from '../scripts/serverNotifications'; import '../elements/emby-button/emby-button'; import './listview/listview.css'; import ServerConnections from './ServerConnections'; +import alert from './alert'; /* eslint-disable indent */ @@ -128,10 +129,8 @@ import ServerConnections from './ServerConnections'; } function showItemOverview(item) { - import('./alert').then((alert) => { - alert({ - text: item.Overview - }); + alert({ + text: item.Overview }); } diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 777d42f6d9..fad9cfd674 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -11,6 +11,7 @@ import viewManager from './viewManager/viewManager'; import AppInfo from './AppInfo'; import Dashboard from '../scripts/clientUtils'; import ServerConnections from './ServerConnections'; +import alert from './alert'; class AppRouter { allRoutes = []; @@ -289,13 +290,11 @@ class AppRouter { this.showWelcome(); break; case 'ServerUpdateNeeded': - import('./alert').then((alert) =>{ - alert({ - text: globalize.translate('ServerUpdateNeeded', 'https://github.com/jellyfin/jellyfin'), - html: globalize.translate('ServerUpdateNeeded', 'https://github.com/jellyfin/jellyfin') - }).then(() => { - this.showSelectServer(); - }); + alert({ + text: globalize.translate('ServerUpdateNeeded', 'https://github.com/jellyfin/jellyfin'), + html: globalize.translate('ServerUpdateNeeded', 'https://github.com/jellyfin/jellyfin') + }).then(() => { + this.showSelectServer(); }); break; default: @@ -410,9 +409,7 @@ class AppRouter { this.forcedLogoutMsg = null; if (msg) { - import('./alert').then((alert) => { - alert(msg); - }); + alert(msg); } } diff --git a/src/components/confirm/confirm.js b/src/components/confirm/confirm.js index 4f3b09c2d1..71d8b5b803 100644 --- a/src/components/confirm/confirm.js +++ b/src/components/confirm/confirm.js @@ -2,68 +2,64 @@ import browser from '../../scripts/browser'; import dialog from '../dialog/dialog'; import globalize from '../../scripts/globalize'; -/* eslint-disable indent */ -export default (() => { - function replaceAll(str, find, replace) { - return str.split(find).join(replace); +function replaceAll(str, find, replace) { + return str.split(find).join(replace); +} + +function nativeConfirm(options) { + if (typeof options === 'string') { + options = { + title: '', + text: options + }; } - if (browser.tv && window.confirm) { - // Use the native confirm dialog - return options => { - if (typeof options === 'string') { - options = { - title: '', - text: options - }; - } + const text = replaceAll(options.text || '', '
', '\n'); + const result = window.confirm(text); - const text = replaceAll(options.text || '', '
', '\n'); - const result = window.confirm(text); + if (result) { + return Promise.resolve(); + } else { + return Promise.reject(); + } +} - if (result) { - return Promise.resolve(); - } else { - return Promise.reject(); - } +function customConfirm(text, title) { + let options; + if (typeof text === 'string') { + options = { + title: title, + text: text }; } else { - // Use our own dialog - return (text, title) => { - let options; - if (typeof text === 'string') { - options = { - title: title, - text: text - }; - } else { - options = text; - } - - const items = []; - - items.push({ - name: options.cancelText || globalize.translate('ButtonCancel'), - id: 'cancel', - type: 'cancel' - }); - - items.push({ - name: options.confirmText || globalize.translate('ButtonOk'), - id: 'ok', - type: options.primary === 'delete' ? 'delete' : 'submit' - }); - - options.buttons = items; - - return dialog.show(options).then(result => { - if (result === 'ok') { - return Promise.resolve(); - } - - return Promise.reject(); - }); - }; + options = text; } -})(); -/* eslint-enable indent */ + + const items = []; + + items.push({ + name: options.cancelText || globalize.translate('ButtonCancel'), + id: 'cancel', + type: 'cancel' + }); + + items.push({ + name: options.confirmText || globalize.translate('ButtonOk'), + id: 'ok', + type: options.primary === 'delete' ? 'delete' : 'submit' + }); + + options.buttons = items; + + return dialog.show(options).then(result => { + if (result === 'ok') { + return Promise.resolve(); + } + + return Promise.reject(); + }); +} + +const baseConfirm = browser.tv && window.confirm ? nativeConfirm : customConfirm; + +export default baseConfirm; diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index 939fedbf0b..2f8a2cadd1 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -8,6 +8,7 @@ import '../../elements/emby-button/paper-icon-button-light'; import './directorybrowser.css'; import '../formdialog.css'; import '../../elements/emby-button/emby-button'; +import alert from '../alert'; /* eslint-disable indent */ @@ -157,9 +158,7 @@ import '../../elements/emby-button/emby-button'; } function alertTextWithOptions(options) { - import('../alert').then((alert) => { - alert(options); - }); + alert(options); } function validatePath(path, validateWriteable, apiClient) { diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index 8d1153959b..69e9bcb8c7 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -14,6 +14,8 @@ import '../../elements/emby-button/emby-button'; import '../../elements/emby-button/paper-icon-button-light'; import './imageeditor.css'; import ServerConnections from '../ServerConnections'; +import alert from '../alert'; +import confirm from '../confirm/confirm'; /* eslint-disable indent */ @@ -200,15 +202,11 @@ import ServerConnections from '../ServerConnections'; return; } - import('../confirm/confirm').then(({default: confirm}) => { - confirm({ - - text: globalize.translate('ConfirmDeleteImage'), - confirmText: globalize.translate('Delete'), - primary: 'delete' - - }).then(afterConfirm); - }); + confirm({ + text: globalize.translate('ConfirmDeleteImage'), + confirmText: globalize.translate('Delete'), + primary: 'delete' + }).then(afterConfirm); } function moveImage(context, apiClient, itemId, type, index, newIndex, focusContext) { @@ -216,9 +214,7 @@ import ServerConnections from '../ServerConnections'; hasChanges = true; reload(context, null, focusContext); }, function () { - import('../alert').then((alert) => { - alert(globalize.translate('ErrorDefault')); - }); + alert(globalize.translate('ErrorDefault')); }); } diff --git a/src/components/mediaLibraryCreator/mediaLibraryCreator.js b/src/components/mediaLibraryCreator/mediaLibraryCreator.js index e17a5d265b..2c7a727106 100644 --- a/src/components/mediaLibraryCreator/mediaLibraryCreator.js +++ b/src/components/mediaLibraryCreator/mediaLibraryCreator.js @@ -20,6 +20,7 @@ import '../listview/listview.css'; import '../formdialog.css'; import '../../assets/css/flexstyles.css'; import toast from '../toast/toast'; +import alert from '../alert'; function onAddLibrary() { if (isCreating) { @@ -27,11 +28,9 @@ import toast from '../toast/toast'; } if (pathInfos.length == 0) { - import('../alert').then((alert) => { - alert({ - text: globalize.translate('PleaseAddAtLeastOneFolder'), - type: 'error' - }); + alert({ + text: globalize.translate('PleaseAddAtLeastOneFolder'), + type: 'error' }); return false; diff --git a/src/components/mediaLibraryEditor/mediaLibraryEditor.js b/src/components/mediaLibraryEditor/mediaLibraryEditor.js index 77c8493b7b..fa29ef25c7 100644 --- a/src/components/mediaLibraryEditor/mediaLibraryEditor.js +++ b/src/components/mediaLibraryEditor/mediaLibraryEditor.js @@ -18,6 +18,7 @@ import '../formdialog.css'; import '../../elements/emby-toggle/emby-toggle'; import '../../assets/css/flexstyles.css'; import toast from '../toast/toast'; +import confirm from '../confirm/confirm'; function onEditLibrary() { if (isCreating) { @@ -69,20 +70,18 @@ import toast from '../toast/toast'; const button = btnRemovePath; const virtualFolder = currentOptions.library; - import('../confirm/confirm').then(({default: confirm}) => { - confirm({ - title: globalize.translate('HeaderRemoveMediaLocation'), - text: globalize.translate('MessageConfirmRemoveMediaLocation'), - confirmText: globalize.translate('Delete'), - primary: 'delete' - }).then(() => { - const refreshAfterChange = currentOptions.refresh; - ApiClient.removeMediaPath(virtualFolder.Name, location, refreshAfterChange).then(() => { - hasChanges = true; - refreshLibraryFromServer(dom.parentWithClass(button, 'dlg-libraryeditor')); - }, () => { - toast(globalize.translate('ErrorDefault')); - }); + confirm({ + title: globalize.translate('HeaderRemoveMediaLocation'), + text: globalize.translate('MessageConfirmRemoveMediaLocation'), + confirmText: globalize.translate('Delete'), + primary: 'delete' + }).then(() => { + const refreshAfterChange = currentOptions.refresh; + ApiClient.removeMediaPath(virtualFolder.Name, location, refreshAfterChange).then(() => { + hasChanges = true; + refreshLibraryFromServer(dom.parentWithClass(button, 'dlg-libraryeditor')); + }, () => { + toast(globalize.translate('ErrorDefault')); }); }); } diff --git a/src/components/metadataEditor/metadataEditor.js b/src/components/metadataEditor/metadataEditor.js index 1c7b64db11..1d5e528813 100644 --- a/src/components/metadataEditor/metadataEditor.js +++ b/src/components/metadataEditor/metadataEditor.js @@ -17,6 +17,7 @@ import '../formdialog.css'; import '../../assets/css/clearbutton.css'; import '../../assets/css/flexstyles.css'; import ServerConnections from '../ServerConnections'; +import toast from '../toast/toast'; /* eslint-disable indent */ @@ -36,9 +37,7 @@ import ServerConnections from '../ServerConnections'; function submitUpdatedItem(form, item) { function afterContentTypeUpdated() { - import('../toast/toast').then(({default: toast}) => { - toast(globalize.translate('MessageItemSaved')); - }); + toast(globalize.translate('MessageItemSaved')); loading.hide(); closeDialog(true); diff --git a/src/components/multiSelect/multiSelect.js b/src/components/multiSelect/multiSelect.js index 0b85bca838..2b24dd1ee6 100644 --- a/src/components/multiSelect/multiSelect.js +++ b/src/components/multiSelect/multiSelect.js @@ -5,6 +5,9 @@ import globalize from '../../scripts/globalize'; import dom from '../../scripts/dom'; import './multiSelect.css'; import ServerConnections from '../ServerConnections'; +import alert from '../alert'; +import playlistEditor from '../playlisteditor/playlisteditor'; +import confirm from '../confirm/confirm'; /* eslint-disable indent */ @@ -138,10 +141,8 @@ import ServerConnections from '../ServerConnections'; } function alertText(options) { - return new Promise((resolve, reject) => { - import('../alert').then((alert) => { - alert(options).then(resolve, resolve); - }); + return new Promise((resolve) => { + alert(options).then(resolve, resolve); }); } @@ -155,17 +156,15 @@ import ServerConnections from '../ServerConnections'; title = globalize.translate('HeaderDeleteItems'); } - import('../confirm/confirm').then((confirm) => { - confirm(msg, title).then(() => { - const promises = itemIds.map(itemId => { - apiClient.deleteItem(itemId); - }); + confirm(msg, title).then(() => { + const promises = itemIds.map(itemId => { + apiClient.deleteItem(itemId); + }); - Promise.all(promises).then(resolve, () => { - alertText(globalize.translate('ErrorDeletingItem')).then(reject, reject); - }); - }, reject); - }); + Promise.all(promises).then(resolve, () => { + alertText(globalize.translate('ErrorDeletingItem')).then(reject, reject); + }); + }, reject); }); } @@ -318,11 +317,8 @@ import ServerConnections from '../ServerConnections'; function combineVersions(apiClient, selection) { if (selection.length < 2) { - import('../alert').then((alert) => { - alert({ - - text: globalize.translate('PleaseSelectTwoItems') - }); + alert({ + text: globalize.translate('PleaseSelectTwoItems') }); return; } diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index abd29e2722..95ebc422f5 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -10,6 +10,7 @@ import loading from '../loading/loading'; import { appHost } from '../apphost'; import * as Screenfull from 'screenfull'; import ServerConnections from '../ServerConnections'; +import alert from '../alert'; function enableLocalPlaylistManagement(player) { if (player.getPlaylist) { @@ -648,11 +649,9 @@ function validatePlaybackInfoResult(instance, result) { } function showPlaybackInfoErrorMessage(instance, errorCode) { - import('../alert').then(({ default: alert }) => { - alert({ - text: globalize.translate(errorCode), - title: globalize.translate('HeaderPlaybackError') - }); + alert({ + text: globalize.translate(errorCode), + title: globalize.translate('HeaderPlaybackError') }); } diff --git a/src/components/playbackSettings/playbackSettings.js b/src/components/playbackSettings/playbackSettings.js index 278b0f5db7..bef8e5b0aa 100644 --- a/src/components/playbackSettings/playbackSettings.js +++ b/src/components/playbackSettings/playbackSettings.js @@ -9,6 +9,7 @@ import { Events } from 'jellyfin-apiclient'; import '../../elements/emby-select/emby-select'; import '../../elements/emby-checkbox/emby-checkbox'; import ServerConnections from '../ServerConnections'; +import toast from '../toast/toast'; /* eslint-disable indent */ @@ -244,9 +245,7 @@ import ServerConnections from '../ServerConnections'; saveUser(context, user, userSettings, apiClient).then(() => { loading.hide(); if (enableSaveConfirmation) { - import('../toast/toast').then((toast) => { - toast(globalize.translate('SettingsSaved')); - }); + toast(globalize.translate('SettingsSaved')); } Events.trigger(instance, 'saved'); diff --git a/src/components/recordingcreator/recordingfields.js b/src/components/recordingcreator/recordingfields.js index 9927b29fa9..8aaf8956e9 100644 --- a/src/components/recordingcreator/recordingfields.js +++ b/src/components/recordingcreator/recordingfields.js @@ -9,6 +9,7 @@ import '../../elements/emby-button/paper-icon-button-light'; import './recordingfields.css'; import '../../assets/css/flexstyles.css'; import ServerConnections from '../ServerConnections'; +import toast from '../toast/toast'; /*eslint prefer-const: "error"*/ @@ -226,9 +227,7 @@ function onRecordChange(e) { } function sendToast(msg) { - import('../toast/toast').then((toast) => { - toast(msg); - }); + toast(msg); } function onRecordSeriesChange(e) { diff --git a/src/components/recordingcreator/recordinghelper.js b/src/components/recordingcreator/recordinghelper.js index 61b470e3b0..b965c3cd0e 100644 --- a/src/components/recordingcreator/recordinghelper.js +++ b/src/components/recordingcreator/recordinghelper.js @@ -1,6 +1,8 @@ import globalize from '../../scripts/globalize'; import loading from '../loading/loading'; import ServerConnections from '../ServerConnections'; +import toast from '../toast/toast'; +import confirm from '../confirm/confirm'; /*eslint prefer-const: "error"*/ @@ -29,48 +31,42 @@ function changeRecordingToSeries(apiClient, timerId, programId, confirmTimerCanc function cancelTimerWithConfirmation(timerId, serverId) { return new Promise(function (resolve, reject) { - import('../confirm/confirm').then((confirm) => { - confirm.default({ + confirm.default({ - text: globalize.translate('MessageConfirmRecordingCancellation'), - primary: 'delete', - confirmText: globalize.translate('HeaderCancelRecording'), - cancelText: globalize.translate('HeaderKeepRecording') + text: globalize.translate('MessageConfirmRecordingCancellation'), + primary: 'delete', + confirmText: globalize.translate('HeaderCancelRecording'), + cancelText: globalize.translate('HeaderKeepRecording') - }).then(function () { - loading.show(); + }).then(function () { + loading.show(); - const apiClient = ServerConnections.getApiClient(serverId); - cancelTimer(apiClient, timerId, true).then(resolve, reject); - }, reject); - }); + const apiClient = ServerConnections.getApiClient(serverId); + cancelTimer(apiClient, timerId, true).then(resolve, reject); + }, reject); }); } function cancelSeriesTimerWithConfirmation(timerId, serverId) { return new Promise(function (resolve, reject) { - import('../confirm/confirm').then((confirm) => { - confirm.default({ + confirm.default({ - text: globalize.translate('MessageConfirmRecordingCancellation'), - primary: 'delete', - confirmText: globalize.translate('HeaderCancelSeries'), - cancelText: globalize.translate('HeaderKeepSeries') + text: globalize.translate('MessageConfirmRecordingCancellation'), + primary: 'delete', + confirmText: globalize.translate('HeaderCancelSeries'), + cancelText: globalize.translate('HeaderKeepSeries') - }).then(function () { - loading.show(); + }).then(function () { + loading.show(); - const apiClient = ServerConnections.getApiClient(serverId); - apiClient.cancelLiveTvSeriesTimer(timerId).then(function () { - import('../toast/toast').then((toast) => { - toast(globalize.translate('SeriesCancelled')); - }); + const apiClient = ServerConnections.getApiClient(serverId); + apiClient.cancelLiveTvSeriesTimer(timerId).then(function () { + toast(globalize.translate('SeriesCancelled')); - loading.hide(); - resolve(); - }, reject); + loading.hide(); + resolve(); }, reject); - }); + }, reject); }); } @@ -99,9 +95,7 @@ function createRecording(apiClient, programId, isSeries) { } function sendToast(msg) { - import('../toast/toast').then((toast) => { - toast(msg); - }); + toast(msg); } function showMultiCancellationPrompt(serverId, programId, timerId, timerStatus, seriesTimerId) { @@ -151,10 +145,7 @@ function showMultiCancellationPrompt(serverId, programId, timerId, timerStatus, loading.show(); apiClient.cancelLiveTvSeriesTimer(seriesTimerId).then(function () { - import('../toast/toast').then((toast) => { - toast(globalize.translate('SeriesCancelled')); - }); - + toast(globalize.translate('SeriesCancelled')); loading.hide(); resolve(); }, reject); diff --git a/src/components/refreshdialog/refreshdialog.js b/src/components/refreshdialog/refreshdialog.js index cb1c8b449f..3b31b023f9 100644 --- a/src/components/refreshdialog/refreshdialog.js +++ b/src/components/refreshdialog/refreshdialog.js @@ -11,6 +11,7 @@ import '../../elements/emby-select/emby-select'; import 'material-design-icons-iconfont'; import '../formdialog.css'; import ServerConnections from '../ServerConnections'; +import toast from '../toast/toast'; /*eslint prefer-const: "error"*/ @@ -86,9 +87,7 @@ function onSubmit(e) { dialogHelper.close(dlg); - import('../toast/toast').then((toast) => { - toast(globalize.translate('RefreshQueued')); - }); + toast(globalize.translate('RefreshQueued')); loading.hide(); diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index f94b4b3f03..04fd608945 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -16,6 +16,7 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; import './remotecontrol.css'; import '../../elements/emby-ratingbutton/emby-ratingbutton'; import ServerConnections from '../ServerConnections'; +import toast from '../toast/toast'; /*eslint prefer-const: "error"*/ @@ -864,9 +865,7 @@ export default function () { }, currentPlayer); form.querySelector('input').value = ''; - import('../toast/toast').then((toast) => { - toast('Message sent.'); - }); + toast('Message sent.'); e.preventDefault(); e.stopPropagation(); @@ -883,9 +882,7 @@ export default function () { }, currentPlayer); form.querySelector('input').value = ''; - import('../toast/toast').then((toast) => { - toast('Text sent.'); - }); + toast('Text sent.'); e.preventDefault(); e.stopPropagation(); diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index a44c420884..9a33b5e1cf 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -15,6 +15,8 @@ import './subtitleeditor.css'; import '../../elements/emby-button/emby-button'; import '../../assets/css/flexstyles.css'; import ServerConnections from '../ServerConnections'; +import toast from '../toast/toast'; +import confirm from '../confirm/confirm'; let currentItem; let hasChanges; @@ -31,9 +33,7 @@ function downloadRemoteSubtitles(context, id) { }).then(function () { hasChanges = true; - import('../toast/toast').then((toast) => { - toast(globalize.translate('MessageDownloadQueued')); - }); + toast(globalize.translate('MessageDownloadQueued')); focusManager.autoFocus(context); }); @@ -42,31 +42,29 @@ function downloadRemoteSubtitles(context, id) { function deleteLocalSubtitle(context, index) { const msg = globalize.translate('MessageAreYouSureDeleteSubtitles'); - import('../confirm/confirm').then((confirm) => { - confirm({ + confirm({ - title: globalize.translate('ConfirmDeletion'), - text: msg, - confirmText: globalize.translate('Delete'), - primary: 'delete' + title: globalize.translate('ConfirmDeletion'), + text: msg, + confirmText: globalize.translate('Delete'), + primary: 'delete' + + }).then(function () { + loading.show(); + + const itemId = currentItem.Id; + const url = 'Videos/' + itemId + '/Subtitles/' + index; + + const apiClient = ServerConnections.getApiClient(currentItem.ServerId); + + apiClient.ajax({ + + type: 'DELETE', + url: apiClient.getUrl(url) }).then(function () { - loading.show(); - - const itemId = currentItem.Id; - const url = 'Videos/' + itemId + '/Subtitles/' + index; - - const apiClient = ServerConnections.getApiClient(currentItem.ServerId); - - apiClient.ajax({ - - type: 'DELETE', - url: apiClient.getUrl(url) - - }).then(function () { - hasChanges = true; - reload(context, apiClient, itemId); - }); + hasChanges = true; + reload(context, apiClient, itemId); }); }); } diff --git a/src/components/subtitlesettings/subtitlesettings.js b/src/components/subtitlesettings/subtitlesettings.js index 9658fb1d3a..88f3b680cc 100644 --- a/src/components/subtitlesettings/subtitlesettings.js +++ b/src/components/subtitlesettings/subtitlesettings.js @@ -16,6 +16,7 @@ import '../../elements/emby-checkbox/emby-checkbox'; import '../../assets/css/flexstyles.css'; import './subtitlesettings.css'; import ServerConnections from '../ServerConnections'; +import toast from '../toast/toast'; /** * Subtitle settings. @@ -88,9 +89,7 @@ function save(instance, context, userId, userSettings, apiClient, enableSaveConf saveUser(context, user, userSettings, instance.appearanceKey, apiClient).then(function () { loading.hide(); if (enableSaveConfirmation) { - import('../toast/toast').then((toast) => { - toast(globalize.translate('SettingsSaved')); - }); + toast(globalize.translate('SettingsSaved')); } Events.trigger(instance, 'saved'); diff --git a/src/controllers/dashboard/apikeys.js b/src/controllers/dashboard/apikeys.js index fccdc189d2..5dfe95c132 100644 --- a/src/controllers/dashboard/apikeys.js +++ b/src/controllers/dashboard/apikeys.js @@ -3,19 +3,18 @@ import loading from '../../components/loading/loading'; import dom from '../../scripts/dom'; import globalize from '../../scripts/globalize'; import '../../elements/emby-button/emby-button'; +import confirm from '../../components/confirm/confirm'; /* eslint-disable indent */ function revoke(page, key) { - import('../../components/confirm/confirm').then(({default: confirm}) => { - confirm(globalize.translate('MessageConfirmRevokeApiKey'), globalize.translate('HeaderConfirmRevokeApiKey')).then(function () { - loading.show(); - ApiClient.ajax({ - type: 'DELETE', - url: ApiClient.getUrl('Auth/Keys/' + key) - }).then(function () { - loadData(page); - }); + confirm(globalize.translate('MessageConfirmRevokeApiKey'), globalize.translate('HeaderConfirmRevokeApiKey')).then(function () { + loading.show(); + ApiClient.ajax({ + type: 'DELETE', + url: ApiClient.getUrl('Auth/Keys/' + key) + }).then(function () { + loadData(page); }); }); } diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index dadb7c19d6..e1892e12b5 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -20,37 +20,37 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; import taskButton from '../../scripts/taskbutton'; import Dashboard from '../../scripts/clientUtils'; import ServerConnections from '../../components/ServerConnections'; +import alert from '../../components/alert'; +import confirm from '../../components/confirm/confirm'; /* eslint-disable indent */ function showPlaybackInfo(btn, session) { - import('../../components/alert').then(({default: alert}) => { - let title; - const text = []; - const displayPlayMethod = playMethodHelper.getDisplayPlayMethod(session); + let title; + const text = []; + const displayPlayMethod = playMethodHelper.getDisplayPlayMethod(session); - if (displayPlayMethod === 'DirectStream') { - title = globalize.translate('DirectStreaming'); - text.push(globalize.translate('DirectStreamHelp1')); + if (displayPlayMethod === 'DirectStream') { + title = globalize.translate('DirectStreaming'); + text.push(globalize.translate('DirectStreamHelp1')); + text.push('
'); + text.push(globalize.translate('DirectStreamHelp2')); + } else if (displayPlayMethod === 'Transcode') { + title = globalize.translate('Transcoding'); + text.push(globalize.translate('MediaIsBeingConverted')); + + if (session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length) { text.push('
'); - text.push(globalize.translate('DirectStreamHelp2')); - } else if (displayPlayMethod === 'Transcode') { - title = globalize.translate('Transcoding'); - text.push(globalize.translate('MediaIsBeingConverted')); - - if (session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length) { - text.push('
'); - text.push(globalize.translate('LabelReasonForTranscoding')); - session.TranscodingInfo.TranscodeReasons.forEach(function (transcodeReason) { - text.push(globalize.translate(transcodeReason)); - }); - } + text.push(globalize.translate('LabelReasonForTranscoding')); + session.TranscodingInfo.TranscodeReasons.forEach(function (transcodeReason) { + text.push(globalize.translate(transcodeReason)); + }); } + } - alert({ - text: text.join('
'), - title: title - }); + alert({ + text: text.join('
'), + title: title }); } @@ -722,33 +722,29 @@ import ServerConnections from '../../components/ServerConnections'; }); }, restart: function (btn) { - import('../../components/confirm/confirm').then(({default: confirm}) => { - confirm({ - title: globalize.translate('Restart'), - text: globalize.translate('MessageConfirmRestart'), - confirmText: globalize.translate('Restart'), - primary: 'delete' - }).then(function () { - const page = dom.parentWithClass(btn, 'page'); - page.querySelector('#btnRestartServer').disabled = true; - page.querySelector('#btnShutdown').disabled = true; - ApiClient.restartServer(); - }); + confirm({ + title: globalize.translate('Restart'), + text: globalize.translate('MessageConfirmRestart'), + confirmText: globalize.translate('Restart'), + primary: 'delete' + }).then(function () { + const page = dom.parentWithClass(btn, 'page'); + page.querySelector('#btnRestartServer').disabled = true; + page.querySelector('#btnShutdown').disabled = true; + ApiClient.restartServer(); }); }, shutdown: function (btn) { - import('../../components/confirm/confirm').then(({default: confirm}) => { - confirm({ - title: globalize.translate('ButtonShutdown'), - text: globalize.translate('MessageConfirmShutdown'), - confirmText: globalize.translate('ButtonShutdown'), - primary: 'delete' - }).then(function () { - const page = dom.parentWithClass(btn, 'page'); - page.querySelector('#btnRestartServer').disabled = true; - page.querySelector('#btnShutdown').disabled = true; - ApiClient.shutdownServer(); - }); + confirm({ + title: globalize.translate('ButtonShutdown'), + text: globalize.translate('MessageConfirmShutdown'), + confirmText: globalize.translate('ButtonShutdown'), + primary: 'delete' + }).then(function () { + const page = dom.parentWithClass(btn, 'page'); + page.querySelector('#btnRestartServer').disabled = true; + page.querySelector('#btnShutdown').disabled = true; + ApiClient.shutdownServer(); }); } }; diff --git a/src/controllers/dashboard/devices/devices.js b/src/controllers/dashboard/devices/devices.js index c817d2b99d..da1126d3af 100644 --- a/src/controllers/dashboard/devices/devices.js +++ b/src/controllers/dashboard/devices/devices.js @@ -8,6 +8,7 @@ import '../../../elements/emby-button/emby-button'; import '../../../elements/emby-itemscontainer/emby-itemscontainer'; import '../../../components/cardbuilder/card.css'; import Dashboard from '../../../scripts/clientUtils'; +import confirm from '../../../components/confirm/confirm'; /* eslint-disable indent */ @@ -40,17 +41,15 @@ import Dashboard from '../../../scripts/clientUtils'; function deleteDevice(page, id) { const msg = globalize.translate('DeleteDeviceConfirmation'); - import('../../../components/confirm/confirm').then(({default: confirm}) => { - confirm({ - text: msg, - title: globalize.translate('HeaderDeleteDevice'), - confirmText: globalize.translate('Delete'), - primary: 'delete' - }).then(async () => { - loading.show(); - await ApiClient.deleteDevice(id); - loadData(page); - }); + confirm({ + text: msg, + title: globalize.translate('HeaderDeleteDevice'), + confirmText: globalize.translate('Delete'), + primary: 'delete' + }).then(async () => { + loading.show(); + await ApiClient.deleteDevice(id); + loadData(page); }); } diff --git a/src/controllers/dashboard/dlna/profile.js b/src/controllers/dashboard/dlna/profile.js index 0106d35e91..74b4f2a25c 100644 --- a/src/controllers/dashboard/dlna/profile.js +++ b/src/controllers/dashboard/dlna/profile.js @@ -7,6 +7,7 @@ import '../../../elements/emby-input/emby-input'; import '../../../elements/emby-checkbox/emby-checkbox'; import '../../../components/listview/listview.css'; import Dashboard from '../../../scripts/clientUtils'; +import toast from '../../../components/toast/toast'; /* eslint-disable indent */ @@ -634,9 +635,7 @@ import Dashboard from '../../../scripts/clientUtils'; data: JSON.stringify(profile), contentType: 'application/json' }).then(function () { - import('../../../components/toast/toast').then((toast) => { - toast('Settings saved.'); - }); + toast('Settings saved.'); }, Dashboard.processErrorResponse); } else { ApiClient.ajax({ diff --git a/src/controllers/dashboard/dlna/profiles.js b/src/controllers/dashboard/dlna/profiles.js index 6d3616864f..e507fc4e7c 100644 --- a/src/controllers/dashboard/dlna/profiles.js +++ b/src/controllers/dashboard/dlna/profiles.js @@ -4,6 +4,7 @@ import loading from '../../../components/loading/loading'; import libraryMenu from '../../../scripts/libraryMenu'; import '../../../components/listview/listview.css'; import '../../../elements/emby-button/emby-button'; +import confirm from '../../../components/confirm/confirm'; /* eslint-disable indent */ @@ -64,16 +65,14 @@ import '../../../elements/emby-button/emby-button'; } function deleteProfile(page, id) { - import('../../../components/confirm/confirm').then(({default: confirm}) => { - confirm(globalize.translate('MessageConfirmProfileDeletion'), globalize.translate('HeaderConfirmProfileDeletion')).then(function () { - loading.show(); - ApiClient.ajax({ - type: 'DELETE', - url: ApiClient.getUrl('Dlna/Profiles/' + id) - }).then(function () { - loading.hide(); - loadProfiles(page); - }); + confirm(globalize.translate('MessageConfirmProfileDeletion'), globalize.translate('HeaderConfirmProfileDeletion')).then(function () { + loading.show(); + ApiClient.ajax({ + type: 'DELETE', + url: ApiClient.getUrl('Dlna/Profiles/' + id) + }).then(function () { + loading.hide(); + loadProfiles(page); }); }); } diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js index ad4445461d..a1a88849b8 100644 --- a/src/controllers/dashboard/encodingsettings.js +++ b/src/controllers/dashboard/encodingsettings.js @@ -4,6 +4,7 @@ import globalize from '../../scripts/globalize'; import dom from '../../scripts/dom'; import libraryMenu from '../../scripts/libraryMenu'; import Dashboard from '../../scripts/clientUtils'; +import alert from '../../components/alert'; /* eslint-disable indent */ @@ -43,12 +44,7 @@ import Dashboard from '../../scripts/clientUtils'; function onSaveEncodingPathFailure(response) { loading.hide(); - let msg = ''; - msg = globalize.translate('FFmpegSavePathNotFound'); - - import('../../components/alert').then(({default: alert}) => { - alert(msg); - }); + alert(globalize.translate('FFmpegSavePathNotFound')); } function updateEncoder(form) { @@ -102,22 +98,17 @@ import Dashboard from '../../scripts/clientUtils'; ApiClient.updateNamedConfiguration('encoding', config).then(function () { updateEncoder(form); }, function () { - import('../../components/alert').then(({default: alert}) => { - alert(globalize.translate('ErrorDefault')); - }); - + alert(globalize.translate('ErrorDefault')); Dashboard.processServerConfigurationUpdateResult(); }); }); }; if ($('#selectVideoDecoder', form).val()) { - import('../../components/alert').then(({default: alert}) => { - alert({ - title: globalize.translate('TitleHardwareAcceleration'), - text: globalize.translate('HardwareAccelerationWarning') - }).then(onDecoderConfirmed); - }); + alert({ + title: globalize.translate('TitleHardwareAcceleration'), + text: globalize.translate('HardwareAccelerationWarning') + }).then(onDecoderConfirmed); } else { onDecoderConfirmed(); } diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index ef2540eef8..bdb99c7108 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -8,6 +8,7 @@ import '../../elements/emby-select/emby-select'; import '../../elements/emby-button/emby-button'; import AppInfo from '../../components/AppInfo'; import Dashboard from '../../scripts/clientUtils'; +import alert from '../../components/alert'; /* eslint-disable indent */ @@ -53,10 +54,7 @@ import Dashboard from '../../scripts/clientUtils'; }); }); }, function () { - import('../../components/alert').then(({default: alert}) => { - alert(globalize.translate('ErrorDefault')); - }); - + alert(globalize.translate('ErrorDefault')); Dashboard.processServerConfigurationUpdateResult(); }); }); diff --git a/src/controllers/dashboard/library.js b/src/controllers/dashboard/library.js index d3575c5ff7..9500ea0d68 100644 --- a/src/controllers/dashboard/library.js +++ b/src/controllers/dashboard/library.js @@ -8,6 +8,7 @@ import imageHelper from '../../scripts/imagehelper'; import '../../components/cardbuilder/card.css'; import '../../elements/emby-itemrefreshindicator/emby-itemrefreshindicator'; import Dashboard from '../../scripts/clientUtils'; +import confirm from '../../components/confirm/confirm'; /* eslint-disable indent */ @@ -47,17 +48,15 @@ import Dashboard from '../../scripts/clientUtils'; msg += virtualFolder.Locations.join('
'); } - import('../../components/confirm/confirm').then((confirm) => { - confirm({ - text: msg, - title: globalize.translate('HeaderRemoveMediaFolder'), - confirmText: globalize.translate('Delete'), - primary: 'delete' - }).then(function () { - const refreshAfterChange = shouldRefreshLibraryAfterChanges(page); - ApiClient.removeVirtualFolder(virtualFolder.Name, refreshAfterChange).then(function () { - reloadLibrary(page); - }); + confirm({ + text: msg, + title: globalize.translate('HeaderRemoveMediaFolder'), + confirmText: globalize.translate('Delete'), + primary: 'delete' + }).then(function () { + const refreshAfterChange = shouldRefreshLibraryAfterChanges(page); + ApiClient.removeVirtualFolder(virtualFolder.Name, refreshAfterChange).then(function () { + reloadLibrary(page); }); }); } diff --git a/src/controllers/dashboard/metadatanfo.js b/src/controllers/dashboard/metadatanfo.js index 58cebdd57e..d3777e4787 100644 --- a/src/controllers/dashboard/metadatanfo.js +++ b/src/controllers/dashboard/metadatanfo.js @@ -3,6 +3,7 @@ import loading from '../../components/loading/loading'; import libraryMenu from '../../scripts/libraryMenu'; import globalize from '../../scripts/globalize'; import Dashboard from '../../scripts/clientUtils'; +import alert from '../../components/alert'; /* eslint-disable indent */ @@ -39,11 +40,8 @@ import Dashboard from '../../scripts/clientUtils'; function showConfirmMessage(config) { const msg = []; msg.push(globalize.translate('MetadataSettingChangeHelp')); - - import('../../components/alert').then(({default: alert}) => { - alert({ - text: msg.join('

') - }); + alert({ + text: msg.join('

') }); } diff --git a/src/controllers/dashboard/networking.js b/src/controllers/dashboard/networking.js index 28cca69b79..3507ff494e 100644 --- a/src/controllers/dashboard/networking.js +++ b/src/controllers/dashboard/networking.js @@ -3,6 +3,7 @@ import globalize from '../../scripts/globalize'; import '../../elements/emby-checkbox/emby-checkbox'; import '../../elements/emby-select/emby-select'; import Dashboard from '../../scripts/clientUtils'; +import alert from '../../components/alert'; /* eslint-disable indent */ @@ -90,9 +91,7 @@ import Dashboard from '../../scripts/clientUtils'; function showAlertText(options) { return new Promise(function (resolve, reject) { - import('../../components/alert').then(({default: alert}) => { - alert(options).then(resolve, reject); - }); + alert(options).then(resolve, reject); }); } diff --git a/src/controllers/dashboard/plugins/add/index.js b/src/controllers/dashboard/plugins/add/index.js index 8738f8be74..7560495345 100644 --- a/src/controllers/dashboard/plugins/add/index.js +++ b/src/controllers/dashboard/plugins/add/index.js @@ -3,6 +3,8 @@ import loading from '../../../../components/loading/loading'; import globalize from '../../../../scripts/globalize'; import '../../../../elements/emby-button/emby-button'; import Dashboard from '../../../../scripts/clientUtils'; +import alert from '../../../../components/alert'; +import confirm from '../../../../components/confirm/confirm'; function populateHistory(packageInfo, page) { let html = ''; @@ -69,9 +71,7 @@ function renderPackage(pkg, installedPlugins, page) { } function alertText(options) { - import('../../../../components/alert').then(({default: alert}) => { - alert(options); - }); + alert(options); } function performInstallation(page, name, guid, version) { @@ -95,12 +95,10 @@ function performInstallation(page, name, guid, version) { msg += '
'; msg += globalize.translate('PleaseConfirmPluginInstallation'); - import('../../../../components/confirm/confirm').then(({default: confirm}) => { - confirm(msg, globalize.translate('HeaderConfirmPluginInstallation')).then(function () { - alertCallback(); - }).catch(() => { - console.debug('plugin not installed'); - }); + confirm(msg, globalize.translate('HeaderConfirmPluginInstallation')).then(function () { + alertCallback(); + }).catch(() => { + console.debug('plugin not installed'); }); } else { alertCallback(); diff --git a/src/controllers/dashboard/plugins/installed/index.js b/src/controllers/dashboard/plugins/installed/index.js index 7ed0eddf93..5ff7a5d462 100644 --- a/src/controllers/dashboard/plugins/installed/index.js +++ b/src/controllers/dashboard/plugins/installed/index.js @@ -5,21 +5,20 @@ import globalize from '../../../../scripts/globalize'; import '../../../../components/cardbuilder/card.css'; import '../../../../elements/emby-button/emby-button'; import Dashboard from '../../../../scripts/clientUtils'; +import confirm from '../../../../components/confirm/confirm'; function deletePlugin(page, uniqueid, name) { const msg = globalize.translate('UninstallPluginConfirmation', name); - import('../../../../components/confirm/confirm').then((confirm) => { - confirm.default({ - title: globalize.translate('HeaderUninstallPlugin'), - text: msg, - primary: 'delete', - confirmText: globalize.translate('HeaderUninstallPlugin') - }).then(function () { - loading.show(); - ApiClient.uninstallPlugin(uniqueid).then(function () { - reloadList(page); - }); + confirm.default({ + title: globalize.translate('HeaderUninstallPlugin'), + text: msg, + primary: 'delete', + confirmText: globalize.translate('HeaderUninstallPlugin') + }).then(function () { + loading.show(); + ApiClient.uninstallPlugin(uniqueid).then(function () { + reloadList(page); }); }); } diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtask.js b/src/controllers/dashboard/scheduledtasks/scheduledtask.js index fe131767e6..cd2f7a07ff 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtask.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtask.js @@ -6,6 +6,7 @@ import globalize from '../../../scripts/globalize'; import '../../../elements/emby-input/emby-input'; import '../../../elements/emby-button/emby-button'; import '../../../elements/emby-select/emby-select'; +import confirm from '../../../components/confirm/confirm'; /* eslint-disable indent */ @@ -135,10 +136,8 @@ import '../../../elements/emby-select/emby-select'; $('#popupAddTrigger', view).removeClass('hide'); }, confirmDeleteTrigger: function (view, index) { - import('../../../components/confirm/confirm').then(({default: confirm}) => { - confirm(globalize.translate('MessageDeleteTaskTrigger'), globalize.translate('HeaderDeleteTaskTrigger')).then(function () { - ScheduledTaskPage.deleteTrigger(view, index); - }); + confirm(globalize.translate('MessageDeleteTaskTrigger'), globalize.translate('HeaderDeleteTaskTrigger')).then(function () { + ScheduledTaskPage.deleteTrigger(view, index); }); }, deleteTrigger: function (view, index) { diff --git a/src/controllers/dashboard/users/useredit.js b/src/controllers/dashboard/users/useredit.js index 90b0397230..17e401d5dc 100644 --- a/src/controllers/dashboard/users/useredit.js +++ b/src/controllers/dashboard/users/useredit.js @@ -3,6 +3,7 @@ import loading from '../../../components/loading/loading'; import libraryMenu from '../../../scripts/libraryMenu'; import globalize from '../../../scripts/globalize'; import Dashboard from '../../../scripts/clientUtils'; +import toast from '../../../components/toast/toast'; /* eslint-disable indent */ @@ -110,10 +111,7 @@ import Dashboard from '../../../scripts/clientUtils'; function onSaveComplete(page, user) { Dashboard.navigate('userprofiles.html'); loading.hide(); - - import('../../../components/toast/toast').then((toast) => { - toast(globalize.translate('SettingsSaved')); - }); + toast(globalize.translate('SettingsSaved')); } function saveUser(user, page) { diff --git a/src/controllers/dashboard/users/userlibraryaccess.js b/src/controllers/dashboard/users/userlibraryaccess.js index 3c602fc3f5..d3407de5b6 100644 --- a/src/controllers/dashboard/users/userlibraryaccess.js +++ b/src/controllers/dashboard/users/userlibraryaccess.js @@ -3,6 +3,7 @@ import loading from '../../../components/loading/loading'; import libraryMenu from '../../../scripts/libraryMenu'; import globalize from '../../../scripts/globalize'; import Dashboard from '../../../scripts/clientUtils'; +import toast from '../../../components/toast/toast'; /* eslint-disable indent */ @@ -92,10 +93,7 @@ import Dashboard from '../../../scripts/clientUtils'; function onSaveComplete(page) { loading.hide(); - - import('../../../components/toast/toast').then((toast) => { - toast(globalize.translate('SettingsSaved')); - }); + toast(globalize.translate('SettingsSaved')); } function saveUser(user, page) { diff --git a/src/controllers/dashboard/users/usernew.js b/src/controllers/dashboard/users/usernew.js index 0798423b81..95138a5125 100644 --- a/src/controllers/dashboard/users/usernew.js +++ b/src/controllers/dashboard/users/usernew.js @@ -3,6 +3,7 @@ import loading from '../../../components/loading/loading'; import globalize from '../../../scripts/globalize'; import '../../../elements/emby-checkbox/emby-checkbox'; import Dashboard from '../../../scripts/clientUtils'; +import toast from '../../../components/toast/toast'; /* eslint-disable indent */ @@ -89,10 +90,7 @@ import Dashboard from '../../../scripts/clientUtils'; Dashboard.navigate('useredit.html?userId=' + user.Id); }); }, function (response) { - import('../../../components/toast/toast').then((toast) => { - toast(globalize.translate('ErrorDefault')); - }); - + toast(globalize.translate('ErrorDefault')); loading.hide(); }); } diff --git a/src/controllers/dashboard/users/userparentalcontrol.js b/src/controllers/dashboard/users/userparentalcontrol.js index 8a23a5c414..282037c21f 100644 --- a/src/controllers/dashboard/users/userparentalcontrol.js +++ b/src/controllers/dashboard/users/userparentalcontrol.js @@ -5,6 +5,7 @@ import libraryMenu from '../../../scripts/libraryMenu'; import globalize from '../../../scripts/globalize'; import '../../../components/listview/listview.css'; import '../../../elements/emby-button/paper-icon-button-light'; +import toast from '../../../components/toast/toast'; /* eslint-disable indent */ @@ -162,10 +163,7 @@ import '../../../elements/emby-button/paper-icon-button-light'; function onSaveComplete(page) { loading.hide(); - - import('../../../components/toast/toast').then((toast) => { - toast(globalize.translate('SettingsSaved')); - }); + toast(globalize.translate('SettingsSaved')); } function saveUser(user, page) { diff --git a/src/controllers/dashboard/users/userpasswordpage.js b/src/controllers/dashboard/users/userpasswordpage.js index d5ed54b630..ab76ce474f 100644 --- a/src/controllers/dashboard/users/userpasswordpage.js +++ b/src/controllers/dashboard/users/userpasswordpage.js @@ -3,6 +3,8 @@ import libraryMenu from '../../../scripts/libraryMenu'; import globalize from '../../../scripts/globalize'; import '../../../elements/emby-button/emby-button'; import Dashboard from '../../../scripts/clientUtils'; +import toast from '../../../components/toast/toast'; +import confirm from '../../../components/confirm/confirm'; /* eslint-disable indent */ @@ -82,10 +84,7 @@ import Dashboard from '../../../scripts/clientUtils'; user.Configuration.EnableLocalPassword = view.querySelector('.chkEnableLocalEasyPassword').checked; ApiClient.updateUserConfiguration(user.Id, user.Configuration).then(function () { loading.hide(); - - import('../../../components/toast/toast').then((toast) => { - toast(globalize.translate('SettingsSaved')); - }); + toast(globalize.translate('SettingsSaved')); loadUser(view, params); }); @@ -105,10 +104,7 @@ import Dashboard from '../../../scripts/clientUtils'; ApiClient.updateUserPassword(userId, currentPassword, newPassword).then(function () { loading.hide(); - - import('../../../components/toast/toast').then((toast) => { - toast(globalize.translate('PasswordSaved')); - }); + toast(globalize.translate('PasswordSaved')); loadUser(view, params); }, function () { @@ -124,9 +120,7 @@ import Dashboard from '../../../scripts/clientUtils'; const form = this; if (form.querySelector('#txtNewPassword').value != form.querySelector('#txtNewPasswordConfirm').value) { - import('../../../components/toast/toast').then((toast) => { - toast(globalize.translate('PasswordMatchError')); - }); + toast(globalize.translate('PasswordMatchError')); } else { loading.show(); savePassword(); @@ -145,18 +139,16 @@ import Dashboard from '../../../scripts/clientUtils'; function resetPassword() { const msg = globalize.translate('PasswordResetConfirmation'); - import('../../../components/confirm/confirm').then(({default: confirm}) => { - confirm(msg, globalize.translate('ResetPassword')).then(function () { - const userId = params.userId; - loading.show(); - ApiClient.resetUserPassword(userId).then(function () { - loading.hide(); - Dashboard.alert({ - message: globalize.translate('PasswordResetComplete'), - title: globalize.translate('ResetPassword') - }); - loadUser(view, params); + confirm(msg, globalize.translate('ResetPassword')).then(function () { + const userId = params.userId; + loading.show(); + ApiClient.resetUserPassword(userId).then(function () { + loading.hide(); + Dashboard.alert({ + message: globalize.translate('PasswordResetComplete'), + title: globalize.translate('ResetPassword') }); + loadUser(view, params); }); }); } @@ -164,18 +156,16 @@ import Dashboard from '../../../scripts/clientUtils'; function resetEasyPassword() { const msg = globalize.translate('PinCodeResetConfirmation'); - import('../../../components/confirm/confirm').then(({default: confirm}) => { - confirm(msg, globalize.translate('HeaderPinCodeReset')).then(function () { - const userId = params.userId; - loading.show(); - ApiClient.resetEasyPassword(userId).then(function () { - loading.hide(); - Dashboard.alert({ - message: globalize.translate('PinCodeResetComplete'), - title: globalize.translate('HeaderPinCodeReset') - }); - loadUser(view, params); + confirm(msg, globalize.translate('HeaderPinCodeReset')).then(function () { + const userId = params.userId; + loading.show(); + ApiClient.resetEasyPassword(userId).then(function () { + loading.hide(); + Dashboard.alert({ + message: globalize.translate('PinCodeResetComplete'), + title: globalize.translate('HeaderPinCodeReset') }); + loadUser(view, params); }); }); } diff --git a/src/controllers/dashboard/users/userprofilespage.js b/src/controllers/dashboard/users/userprofilespage.js index 4650e5eb63..07349a2b42 100644 --- a/src/controllers/dashboard/users/userprofilespage.js +++ b/src/controllers/dashboard/users/userprofilespage.js @@ -9,23 +9,22 @@ import '../../../elements/emby-button/emby-button'; import '../../../components/indicators/indicators.css'; import '../../../assets/css/flexstyles.css'; import Dashboard from '../../../scripts/clientUtils'; +import confirm from '../../../components/confirm/confirm'; /* eslint-disable indent */ function deleteUser(page, id) { const msg = globalize.translate('DeleteUserConfirmation'); - import('../../../components/confirm/confirm').then(({default: confirm}) => { - confirm({ - title: globalize.translate('DeleteUser'), - text: msg, - confirmText: globalize.translate('Delete'), - primary: 'delete' - }).then(function () { - loading.show(); - ApiClient.deleteUser(id).then(function () { - loadData(page); - }); + confirm({ + title: globalize.translate('DeleteUser'), + text: msg, + confirmText: globalize.translate('Delete'), + primary: 'delete' + }).then(function () { + loading.show(); + ApiClient.deleteUser(id).then(function () { + loadData(page); }); }); } diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index e74f2db08a..ba0101d6c0 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -29,6 +29,7 @@ import '../../elements/emby-select/emby-select'; import itemShortcuts from '../../components/shortcuts'; import Dashboard from '../../scripts/clientUtils'; import ServerConnections from '../../components/ServerConnections'; +import confirm from '../../components/confirm/confirm'; function getPromise(apiClient, params) { const id = params.id; @@ -1869,16 +1870,14 @@ export default function (view, params) { } function splitVersions(instance, page, apiClient, params) { - import('../../components/confirm/confirm').then(({ default: confirm }) => { - confirm('Are you sure you wish to split the media sources into separate items?', 'Split Media Apart').then(function () { - loading.show(); - apiClient.ajax({ - type: 'DELETE', - url: apiClient.getUrl('Videos/' + params.id + '/AlternateSources') - }).then(function () { - loading.hide(); - reload(instance, page, params); - }); + confirm('Are you sure you wish to split the media sources into separate items?', 'Split Media Apart').then(function () { + loading.show(); + apiClient.ajax({ + type: 'DELETE', + url: apiClient.getUrl('Videos/' + params.id + '/AlternateSources') + }).then(function () { + loading.hide(); + reload(instance, page, params); }); }); } diff --git a/src/controllers/livetvsettings.js b/src/controllers/livetvsettings.js index 01f9a96590..2a32503861 100644 --- a/src/controllers/livetvsettings.js +++ b/src/controllers/livetvsettings.js @@ -3,6 +3,7 @@ import loading from '../components/loading/loading'; import globalize from '../scripts/globalize'; import '../elements/emby-button/emby-button'; import Dashboard from '../scripts/clientUtils'; +import alert from '../components/alert'; function loadPage(page, config) { $('.liveTvSettingsForm', page).show(); @@ -51,9 +52,7 @@ function showSaveMessage(recordingPathChanged) { } if (msg) { - import('../components/alert').then(({default: alert}) => { - alert(msg); - }); + alert(msg); } } diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index d7f346b872..931ce228cd 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -12,6 +12,7 @@ import '../components/cardbuilder/card.css'; import 'material-design-icons-iconfont'; import '../elements/emby-button/emby-button'; import Dashboard from '../scripts/clientUtils'; +import confirm from '../components/confirm/confirm'; const enableFocusTransform = !browser.slow && !browser.edge; @@ -57,17 +58,15 @@ function renderDevices(page, devices) { function deleteDevice(page, id) { const message = globalize.translate('MessageConfirmDeleteTunerDevice'); - import('../components/confirm/confirm').then(({default: confirm}) => { - confirm(message, globalize.translate('HeaderDeleteDevice')).then(function () { - loading.show(); - ApiClient.ajax({ - type: 'DELETE', - url: ApiClient.getUrl('LiveTv/TunerHosts', { - Id: id - }) - }).then(function () { - reload(page); - }); + confirm(message, globalize.translate('HeaderDeleteDevice')).then(function () { + loading.show(); + ApiClient.ajax({ + type: 'DELETE', + url: ApiClient.getUrl('LiveTv/TunerHosts', { + Id: id + }) + }).then(function () { + reload(page); }); }); } @@ -175,19 +174,17 @@ function mapChannels(page, providerId) { function deleteProvider(page, id) { const message = globalize.translate('MessageConfirmDeleteGuideProvider'); - import('../components/confirm/confirm').then(({default: confirm}) => { - confirm(message, globalize.translate('HeaderDeleteProvider')).then(function () { - loading.show(); - ApiClient.ajax({ - type: 'DELETE', - url: ApiClient.getUrl('LiveTv/ListingProviders', { - Id: id - }) - }).then(function () { - reload(page); - }, function () { - reload(page); - }); + confirm(message, globalize.translate('HeaderDeleteProvider')).then(function () { + loading.show(); + ApiClient.ajax({ + type: 'DELETE', + url: ApiClient.getUrl('LiveTv/ListingProviders', { + Id: id + }) + }).then(function () { + reload(page); + }, function () { + reload(page); }); }); } diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js index 48fb8ce5ae..35191a1954 100644 --- a/src/controllers/session/login/index.js +++ b/src/controllers/session/login/index.js @@ -10,6 +10,7 @@ import '../../../components/cardbuilder/card.css'; import '../../../elements/emby-checkbox/emby-checkbox'; import Dashboard from '../../../scripts/clientUtils'; import ServerConnections from '../../../components/ServerConnections'; +import toast from '../../../components/toast/toast'; /* eslint-disable indent */ @@ -29,10 +30,8 @@ import ServerConnections from '../../../components/ServerConnections'; const UnauthorizedOrForbidden = [401, 403]; if (UnauthorizedOrForbidden.includes(response.status)) { - import('../../../components/toast/toast').then((toast) => { - const messageKey = response.status === 401 ? 'MessageInvalidUser' : 'MessageUnauthorizedUser'; - toast(globalize.translate(messageKey)); - }); + const messageKey = response.status === 401 ? 'MessageInvalidUser' : 'MessageUnauthorizedUser'; + toast(globalize.translate(messageKey)); } else { Dashboard.alert({ message: globalize.translate('MessageUnableToConnectToServer'), diff --git a/src/controllers/session/selectServer/index.js b/src/controllers/session/selectServer/index.js index 68aba824c4..b90fc5ca04 100644 --- a/src/controllers/session/selectServer/index.js +++ b/src/controllers/session/selectServer/index.js @@ -16,6 +16,7 @@ import '../../../components/cardbuilder/card.css'; import '../../../elements/emby-button/emby-button'; import Dashboard from '../../../scripts/clientUtils'; import ServerConnections from '../../../components/ServerConnections'; +import alert from '../../../components/alert'; /* eslint-disable indent */ @@ -102,9 +103,7 @@ import ServerConnections from '../../../components/ServerConnections'; } function alertTextWithOptions(options) { - import('../../../components/alert').then(({default: alert}) => { - alert(options); - }); + alert(options); } function showServerConnectionFailure() { diff --git a/src/controllers/user/profile/index.js b/src/controllers/user/profile/index.js index b15334dabe..4398de36e2 100644 --- a/src/controllers/user/profile/index.js +++ b/src/controllers/user/profile/index.js @@ -5,6 +5,8 @@ import { appHost } from '../../../components/apphost'; import globalize from '../../../scripts/globalize'; import '../../../elements/emby-button/emby-button'; import Dashboard from '../../../scripts/clientUtils'; +import toast from '../../../components/toast/toast'; +import confirm from '../../../components/confirm/confirm'; function reloadUser(page) { const userId = getParameterByName('userId'); @@ -41,26 +43,20 @@ function onFileReaderError(evt) { loading.hide(); switch (evt.target.error.code) { case evt.target.error.NOT_FOUND_ERR: - import('../../../components/toast/toast').then((toast) => { - toast(globalize.translate('FileNotFound')); - }); + toast(globalize.translate('FileNotFound')); break; case evt.target.error.ABORT_ERR: onFileReaderAbort(); break; case evt.target.error.NOT_READABLE_ERR: default: - import('../../../components/toast/toast').then((toast) => { - toast(globalize.translate('FileReadError')); - }); + toast(globalize.translate('FileReadError')); } } function onFileReaderAbort(evt) { loading.hide(); - import('../../../components/toast/toast').then((toast) => { - toast(globalize.translate('FileReadCancelled')); - }); + toast(globalize.translate('FileReadCancelled')); } function setFiles(page, files) { @@ -90,14 +86,12 @@ export default function (view, params) { reloadUser(view); new UserPasswordPage(view, params); view.querySelector('#btnDeleteImage').addEventListener('click', function () { - import('../../../components/confirm/confirm').then(({default: confirm}) => { - confirm(globalize.translate('DeleteImageConfirmation'), globalize.translate('DeleteImage')).then(function () { - loading.show(); - const userId = getParameterByName('userId'); - ApiClient.deleteUserImage(userId, 'primary').then(function () { - loading.hide(); - reloadUser(view); - }); + confirm(globalize.translate('DeleteImageConfirmation'), globalize.translate('DeleteImage')).then(function () { + loading.show(); + const userId = getParameterByName('userId'); + ApiClient.deleteUserImage(userId, 'primary').then(function () { + loading.hide(); + reloadUser(view); }); }); }); diff --git a/src/controllers/wizard/user/index.js b/src/controllers/wizard/user/index.js index 509509a190..03566ac7ee 100644 --- a/src/controllers/wizard/user/index.js +++ b/src/controllers/wizard/user/index.js @@ -4,6 +4,7 @@ import '../../../assets/css/dashboard.css'; import '../../../elements/emby-input/emby-input'; import '../../../elements/emby-button/emby-button'; import Dashboard from '../../../scripts/clientUtils'; +import toast from '../../../components/toast/toast'; function getApiClient() { return ApiClient; @@ -37,9 +38,7 @@ function onSubmit(e) { const form = this; if (form.querySelector('#txtManualPassword').value != form.querySelector('#txtPasswordConfirm').value) { - import('../../../components/toast/toast').then((toast) => { - toast(globalize.translate('PasswordMatchError')); - }); + toast(globalize.translate('PasswordMatchError')); } else { submit(form); } diff --git a/src/plugins/chromecastPlayer/plugin.js b/src/plugins/chromecastPlayer/plugin.js index 5017c9337e..81bbb7e3dc 100644 --- a/src/plugins/chromecastPlayer/plugin.js +++ b/src/plugins/chromecastPlayer/plugin.js @@ -5,6 +5,7 @@ import globalize from '../../scripts/globalize'; import { Events } from 'jellyfin-apiclient'; import castSenderApiLoader from '../../components/castSenderApi'; import ServerConnections from '../../components/ServerConnections'; +import alert from '../../components/alert'; // Based on https://github.com/googlecast/CastVideos-chrome/blob/master/CastVideos.js @@ -440,11 +441,9 @@ class CastPlayer { } function alertText(text, title) { - import('../../components/alert').then(({default: alert}) => { - alert({ - text: text, - title: title - }); + alert({ + text, + title }); } diff --git a/src/plugins/experimentalWarnings/plugin.js b/src/plugins/experimentalWarnings/plugin.js index fb9957aea4..563e6264f2 100644 --- a/src/plugins/experimentalWarnings/plugin.js +++ b/src/plugins/experimentalWarnings/plugin.js @@ -1,6 +1,7 @@ import globalize from '../../scripts/globalize'; import * as userSettings from '../../scripts/settings/userSettings'; import { appHost } from '../../components/apphost'; +import alert from '../../components/alert'; // TODO: Replace with date-fns // https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php @@ -26,13 +27,8 @@ function showMessage(text, userSettingsKey, appHostFeature) { return Promise.resolve(); } - return new Promise(function (resolve, reject) { - userSettings.set(userSettingsKey, '1', false); - - import('../../components/alert').then(({default: alert}) => { - return alert(text).then(resolve, resolve); - }); - }); + userSettings.set(userSettingsKey, '1', false); + return alert(text); } function showBlurayMessage() { diff --git a/src/plugins/playAccessValidation/plugin.js b/src/plugins/playAccessValidation/plugin.js index 674fa64874..6ed64342a6 100644 --- a/src/plugins/playAccessValidation/plugin.js +++ b/src/plugins/playAccessValidation/plugin.js @@ -1,10 +1,9 @@ import globalize from '../../scripts/globalize'; import ServerConnections from '../../components/ServerConnections'; +import alert from '../../components/alert'; function showErrorMessage() { - return import('../../components/alert').then(({default: alert}) => { - return alert(globalize.translate('MessagePlayAccessRestricted')); - }); + return alert(globalize.translate('MessagePlayAccessRestricted')); } class PlayAccessValidation { diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index 7da392ef5f..03ae8a3163 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -1,5 +1,10 @@ import AppInfo from '../components/AppInfo'; import ServerConnections from '../components/ServerConnections'; +import toast from '../components/toast/toast'; +import loading from '../components/loading/loading'; +import { appRouter } from '../components/appRouter'; +import baseAlert from '../components/alert'; +import baseConfirm from '../components/confirm/confirm'; export function getCurrentUser() { return window.ApiClient.getCurrentUser(false); @@ -78,39 +83,21 @@ export function navigate(url, preserveQueryString) { url += queryString; } - return new Promise(function (resolve, reject) { - import('../components/appRouter').then(({ appRouter }) => { - return appRouter.show(url).then(resolve, reject); - }); - }); + return appRouter.show(url); } export function processPluginConfigurationUpdateResult() { - Promise.all([ - import('../components/loading/loading'), - import('../components/toast/toast') - ]) - .then(([loading, toast]) => { - loading.hide(); - toast(Globalize.translate('MessageSettingsSaved')); - }); + loading.hide(); + toast(Globalize.translate('MessageSettingsSaved')); } export function processServerConfigurationUpdateResult(result) { - Promise.all([ - import('../components/loading/loading'), - import('../components/toast/toast') - ]) - .then(([loading, toast]) => { - loading.hide(); - toast.default(Globalize.translate('MessageSettingsSaved')); - }); + loading.hide(); + toast.default(Globalize.translate('MessageSettingsSaved')); } export function processErrorResponse(response) { - import('../components/loading/loading').then((loading) => { - loading.hide(); - }); + loading.hide(); let status = '' + response.status; @@ -126,19 +113,15 @@ export function processErrorResponse(response) { export function alert(options) { if (typeof options == 'string') { - return void import('../components/toast/toast').then((toast) => { - toast.default({ - text: options - }); + toast.default({ + text: options }); - } - - import('../components/alert').then((alert) => { - alert.default({ + } else { + baseAlert.default({ title: options.title || Globalize.translate('HeaderAlert'), text: options.message }).then(options.callback || function () {}); - }); + } } export function capabilities(appHost) { @@ -161,24 +144,18 @@ export function selectServer() { } export function hideLoadingMsg() { - import('../components/loading/loading').then(({default: loading}) => { - loading.hide(); - }); + loading.hide(); } export function showLoadingMsg() { - import('../components/loading/loading').then(({default: loading}) => { - loading.show(); - }); + loading.show(); } export function confirm(message, title, callback) { - import('../components/confirm/confirm').then((confirm) => { - confirm(message, title).then(function() { - callback(!0); - }).catch(function() { - callback(!1); - }); + baseConfirm(message, title).then(function() { + callback(!0); + }).catch(function() { + callback(!1); }); } diff --git a/src/scripts/deleteHelper.js b/src/scripts/deleteHelper.js index 33adc50985..575e6753c9 100644 --- a/src/scripts/deleteHelper.js +++ b/src/scripts/deleteHelper.js @@ -3,13 +3,10 @@ import confirm from '../components/confirm/confirm'; import { appRouter } from '../components/appRouter'; import globalize from './globalize'; import ServerConnections from '../components/ServerConnections'; +import alert from '../components/alert'; function alertText(options) { - return new Promise(function (resolve, reject) { - import('../components/alert').then((alert) => { - alert(options).then(resolve, resolve); - }); - }); + return alert(options); } export function deleteItem(options) { diff --git a/src/scripts/serverNotifications.js b/src/scripts/serverNotifications.js index 910b05f5f5..1ea03ea343 100644 --- a/src/scripts/serverNotifications.js +++ b/src/scripts/serverNotifications.js @@ -5,6 +5,8 @@ import inputManager from '../scripts/inputManager'; import focusManager from '../components/focusManager'; import { appRouter } from '../components/appRouter'; import ServerConnections from '../components/ServerConnections'; +import toast from '../components/toast/toast'; +import alert from '../components/alert'; const serverNotifications = {}; @@ -15,13 +17,9 @@ function notifyApp() { function displayMessage(cmd) { const args = cmd.Arguments; if (args.TimeoutMs) { - import('../components/toast/toast').then((toast) => { - toast({ title: args.Header, text: args.Text }); - }); + toast({ title: args.Header, text: args.Text }); } else { - import('../components/alert').then(({default: alert}) => { - alert({ title: args.Header, text: args.Text }); - }); + alert({ title: args.Header, text: args.Text }); } }