aboutsummaryrefslogtreecommitdiff
path: root/ext/js/pages/settings/backup-controller.js
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2023-12-16 19:55:02 -0500
committerGitHub <noreply@github.com>2023-12-17 00:55:02 +0000
commit95ad1ae1ef4a53802c12eab4c9b1545af0333aa1 (patch)
treec08016ccb3265a5931baf413cd9d78fcbf600ae9 /ext/js/pages/settings/backup-controller.js
parent77d27113d347b4724302f1c72de1f238e04aeead (diff)
Safer query selector (#364)
* Add querySelectorNotNull helper function * Use querySelectorNotNull * Updates * Update settings * Remove unused * Update * Update function calls * More updates * Update types * Remove obsolete code
Diffstat (limited to 'ext/js/pages/settings/backup-controller.js')
-rw-r--r--ext/js/pages/settings/backup-controller.js29
1 files changed, 20 insertions, 9 deletions
diff --git a/ext/js/pages/settings/backup-controller.js b/ext/js/pages/settings/backup-controller.js
index 95433d1c..94f85416 100644
--- a/ext/js/pages/settings/backup-controller.js
+++ b/ext/js/pages/settings/backup-controller.js
@@ -20,6 +20,7 @@ import {Dexie} from '../../../lib/dexie.js';
import {isObject, log} from '../../core.js';
import {OptionsUtil} from '../../data/options-util.js';
import {ArrayBufferUtil} from '../../data/sandbox/array-buffer-util.js';
+import {querySelectorNotNull} from '../../dom/query-selector.js';
import {yomitan} from '../../yomitan.js';
import {DictionaryController} from './dictionary-controller.js';
@@ -243,7 +244,8 @@ export class BackupController {
*/
_showSettingsImportError(error) {
log.error(error);
- const element = /** @type {HTMLElement} */ (document.querySelector('#settings-import-error-message'));
+ /** @type {HTMLElement} */
+ const element = querySelectorNotNull(document, '#settings-import-error-message');
element.textContent = `${error}`;
if (this._settingsImportErrorModal !== null) {
this._settingsImportErrorModal.setVisible(true);
@@ -480,7 +482,8 @@ export class BackupController {
/** */
_onSettingsImportClick() {
- const element = /** @type {HTMLElement} */ (document.querySelector('#settings-import-file'));
+ /** @type {HTMLElement} */
+ const element = querySelectorNotNull(document, '#settings-import-file');
element.click();
}
@@ -538,7 +541,8 @@ export class BackupController {
* @param {boolean} [isWarning]
*/
_databaseExportImportErrorMessage(message, isWarning=false) {
- const errorMessageContainer = /** @type {HTMLElement} */ (document.querySelector('#db-ops-error-report'));
+ /** @type {HTMLElement} */
+ const errorMessageContainer = querySelectorNotNull(document, '#db-ops-error-report');
errorMessageContainer.style.display = 'block';
errorMessageContainer.textContent = message;
@@ -557,7 +561,8 @@ export class BackupController {
_databaseExportProgressCallback({totalRows, completedRows, done}) {
// eslint-disable-next-line no-console
console.log(`Progress: ${completedRows} of ${totalRows} rows completed`);
- const messageContainer = /** @type {HTMLElement} */ (document.querySelector('#db-ops-progress-report'));
+ /** @type {HTMLElement} */
+ const messageContainer = querySelectorNotNull(document, '#db-ops-progress-report');
messageContainer.style.display = 'block';
messageContainer.textContent = `Export Progress: ${completedRows} of ${totalRows} rows completed`;
@@ -589,7 +594,8 @@ export class BackupController {
return;
}
- const errorMessageContainer = /** @type {HTMLElement} */ (document.querySelector('#db-ops-error-report'));
+ /** @type {HTMLElement} */
+ const errorMessageContainer = querySelectorNotNull(document, '#db-ops-error-report');
errorMessageContainer.style.display = 'none';
const date = new Date(Date.now());
@@ -619,7 +625,8 @@ export class BackupController {
_databaseImportProgressCallback({totalRows, completedRows, done}) {
// eslint-disable-next-line no-console
console.log(`Progress: ${completedRows} of ${totalRows} rows completed`);
- const messageContainer = /** @type {HTMLElement} */ (document.querySelector('#db-ops-progress-report'));
+ /** @type {HTMLElement} */
+ const messageContainer = querySelectorNotNull(document, '#db-ops-progress-report');
messageContainer.style.display = 'block';
messageContainer.style.color = '#4169e1';
messageContainer.textContent = `Import Progress: ${completedRows} of ${totalRows} rows completed`;
@@ -645,7 +652,9 @@ export class BackupController {
/** */
_onSettingsImportDatabaseClick() {
- /** @type {HTMLElement} */ (document.querySelector('#settings-import-db')).click();
+ /** @type {HTMLElement} */
+ const element = querySelectorNotNull(document, '#settings-import-db');
+ element.click();
}
/**
@@ -658,7 +667,8 @@ export class BackupController {
return;
}
- const errorMessageContainer = /** @type {HTMLElement} */ (document.querySelector('#db-ops-error-report'));
+ /** @type {HTMLElement} */
+ const errorMessageContainer = querySelectorNotNull(document, '#db-ops-error-report');
errorMessageContainer.style.display = 'none';
const element = /** @type {HTMLInputElement} */ (e.currentTarget);
@@ -675,7 +685,8 @@ export class BackupController {
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
- const messageContainer = /** @type {HTMLElement} */ (document.querySelector('#db-ops-progress-report'));
+ /** @type {HTMLElement} */
+ const messageContainer = querySelectorNotNull(document, '#db-ops-progress-report');
messageContainer.style.color = 'red';
this._databaseExportImportErrorMessage('Encountered errors when importing. Please restart the browser and try again. If it continues to fail, reinstall Yomitan and import dictionaries one-by-one.');
} finally {