From 0638e6485936d313b42f023c404a0d392242ef65 Mon Sep 17 00:00:00 2001 From: jamesmaa Date: Mon, 14 Oct 2024 09:57:32 -0700 Subject: [PATCH] Changes --- .../schemas/recommended-settings-schema.json | 14 +++++ .../recommended-settings-controller.js | 20 +++++-- ext/js/pages/welcome-main.js | 4 ++ ext/templates-modals.html | 53 ++++++++++--------- 4 files changed, 60 insertions(+), 31 deletions(-) diff --git a/ext/data/schemas/recommended-settings-schema.json b/ext/data/schemas/recommended-settings-schema.json index 4fd3b751ef..22ea8f5319 100644 --- a/ext/data/schemas/recommended-settings-schema.json +++ b/ext/data/schemas/recommended-settings-schema.json @@ -17,6 +17,16 @@ "type": "string", "minLength": 2 }, + "action": { + "type": "string", + "enum": [ + "set", + "delete", + "swap", + "splice", + "push" + ] + }, "value": { "anyOf": [ { @@ -36,6 +46,10 @@ "type": "object" } ] + }, + "description": { + "type": "string", + "minLength": 2 } } } diff --git a/ext/js/pages/settings/recommended-settings-controller.js b/ext/js/pages/settings/recommended-settings-controller.js index d28ddd37bd..079bf45636 100644 --- a/ext/js/pages/settings/recommended-settings-controller.js +++ b/ext/js/pages/settings/recommended-settings-controller.js @@ -30,7 +30,6 @@ export class RecommendedSettingsController { this._languageSelect = querySelectorNotNull(document, '#language-select'); /** @type {HTMLInputElement} */ this._applyButton = querySelectorNotNull(document, '#recommended-settings-apply-button'); - /** @type {} */ } /** */ @@ -53,9 +52,15 @@ export class RecommendedSettingsController { for (const {path, value, description} of recommendedSettings) { const template = this._settingsController.instantiateTemplate('recommended-settings-list-item'); - // Render checkbox + // Render label const label = querySelectorNotNull(template, '.settings-item-label'); - label.innerHTML = `${path} -> ${value}`; + const pathCodeElement = document.createElement('code'); + pathCodeElement.textContent = path; + const valueCodeElement = document.createElement('code'); + valueCodeElement.textContent = value; + label.appendChild(pathCodeElement); + label.appendChild(document.createTextNode(' -> ')); + label.appendChild(valueCodeElement); // Render description const descriptionElement = querySelectorNotNull(template, '.settings-item-description'); @@ -78,12 +83,17 @@ export class RecommendedSettingsController { */ _onApplyButtonClicked(e) { e.preventDefault(); - const enabledCheckboxes = querySelectorNotNull(document, '#recommended-settings-list').querySelectorAll('input[type="checkbox"]:checked'); + const enabledCheckboxes /** @type {HTMLInputElement} */ = querySelectorNotNull(document, '#recommended-settings-list').querySelectorAll('input[type="checkbox"]:checked'); if (enabledCheckboxes.length > 0) { const recommendedSettings = this._settingsController.getRecommendedSettings(this._languageSelect.value); + const modifications = []; for (const checkbox of enabledCheckboxes) { - this._settingsController.setSetting(path, value); + const path = checkbox.value; + const {action, value} = recommendedSettings.find((setting) => setting.path === path); + modifications.push({action, path, value}); } + void this._settingsController.modifyProfileSettings(modifications); + void this._settingsController.refresh(); } this._recommendedSettingsModal.hidden = true; } diff --git a/ext/js/pages/welcome-main.js b/ext/js/pages/welcome-main.js index ae00c0c637..c4d75ee8c3 100644 --- a/ext/js/pages/welcome-main.js +++ b/ext/js/pages/welcome-main.js @@ -26,6 +26,7 @@ import {GenericSettingController} from './settings/generic-setting-controller.js import {LanguagesController} from './settings/languages-controller.js'; import {ModalController} from './settings/modal-controller.js'; import {RecommendedPermissionsController} from './settings/recommended-permissions-controller.js'; +import {RecommendedSettingsController} from './settings/recommended-settings-controller.js'; import {ScanInputsSimpleController} from './settings/scan-inputs-simple-controller.js'; import {SettingsController} from './settings/settings-controller.js'; import {SettingsDisplayController} from './settings/settings-display-controller.js'; @@ -105,6 +106,9 @@ await Application.main(true, async (application) => { const languagesController = new LanguagesController(settingsController); preparePromises.push(languagesController.prepare()); + const recommendedSettingsController = new RecommendedSettingsController(settingsController); + preparePromises.push(recommendedSettingsController.prepare()); + await Promise.all(preparePromises); document.documentElement.dataset.loaded = 'true'; diff --git a/ext/templates-modals.html b/ext/templates-modals.html index 7ec295ee9e..ca7f132193 100644 --- a/ext/templates-modals.html +++ b/ext/templates-modals.html @@ -331,6 +331,33 @@

Pronunciation Dictionaries

+ + +