diff options
Diffstat (limited to 'ext/bg/js/settings/backup-controller.js')
-rw-r--r-- | ext/bg/js/settings/backup-controller.js | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/ext/bg/js/settings/backup-controller.js b/ext/bg/js/settings/backup-controller.js index 08ee7070..0676d451 100644 --- a/ext/bg/js/settings/backup-controller.js +++ b/ext/bg/js/settings/backup-controller.js @@ -16,6 +16,7 @@ */ /* global + * Modal * OptionsUtil * api */ @@ -26,12 +27,19 @@ class BackupController { this._settingsExportToken = null; this._settingsExportRevoke = null; this._currentVersion = 0; + this._settingsResetModal = null; + this._settingsImportErrorModal = null; + this._settingsImportWarningModal = null; this._optionsUtil = new OptionsUtil(); } async prepare() { await this._optionsUtil.prepare(); + this._settingsResetModal = new Modal(document.querySelector('#settings-reset-modal')); + this._settingsImportErrorModal = new Modal(document.querySelector('#settings-import-error-modal')); + this._settingsImportWarningModal = new Modal(document.querySelector('#settings-import-warning-modal')); + document.querySelector('#settings-export').addEventListener('click', this._onSettingsExportClick.bind(this), false); document.querySelector('#settings-import').addEventListener('click', this._onSettingsImportClick.bind(this), false); document.querySelector('#settings-import-file').addEventListener('change', this._onSettingsImportFileChange.bind(this), false); @@ -153,14 +161,14 @@ class BackupController { _showSettingsImportError(error) { yomichan.logError(error); document.querySelector('#settings-import-error-modal-message').textContent = `${error}`; - $('#settings-import-error-modal').modal('show'); + this._settingsImportErrorModal.setVisible(true); } async _showSettingsImportWarnings(warnings) { - const modalNode = $('#settings-import-warning-modal'); + const modal = this._settingsImportWarningModal; const buttons = document.querySelectorAll('.settings-import-warning-modal-import-button'); const messageContainer = document.querySelector('#settings-import-warning-modal-message'); - if (modalNode.length === 0 || buttons.length === 0 || messageContainer === null) { + if (buttons.length === 0 || messageContainer === null) { return {result: false}; } @@ -175,7 +183,7 @@ class BackupController { messageContainer.appendChild(fragment); // Show modal - modalNode.modal('show'); + modal.setVisible(true); // Wait for modal to close return new Promise((resolve) => { @@ -185,9 +193,10 @@ class BackupController { result: true, sanitize: e.currentTarget.dataset.importSanitize === 'true' }); - modalNode.modal('hide'); + modal.setVisible(false); }; - const onModalHide = () => { + const onModalVisibilityChanged = ({visible}) => { + if (visible) { return; } complete({result: false}); }; @@ -196,7 +205,7 @@ class BackupController { if (completed) { return; } completed = true; - modalNode.off('hide.bs.modal', onModalHide); + modal.off('visibilityChanged', onModalVisibilityChanged); for (const button of buttons) { button.removeEventListener('click', onButtonClick, false); } @@ -205,7 +214,7 @@ class BackupController { }; // Hook events - modalNode.on('hide.bs.modal', onModalHide); + modal.on('visibilityChanged', onModalVisibilityChanged); for (const button of buttons) { button.addEventListener('click', onButtonClick, false); } @@ -368,11 +377,11 @@ class BackupController { // Resetting _onSettingsResetClick() { - $('#settings-reset-modal').modal('show'); + this._settingsResetModal.setVisible(true); } async _onSettingsResetConfirmClick() { - $('#settings-reset-modal').modal('hide'); + this._settingsResetModal.setVisible(false); // Get default options const optionsFull = this._optionsUtil.getDefault(); |