Skip to content

Commit

Permalink
Changes
Browse files Browse the repository at this point in the history
  • Loading branch information
jamesmaa committed Oct 14, 2024
1 parent 80a2050 commit 0638e64
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 31 deletions.
14 changes: 14 additions & 0 deletions ext/data/schemas/recommended-settings-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,16 @@
"type": "string",
"minLength": 2
},
"action": {
"type": "string",
"enum": [
"set",
"delete",
"swap",
"splice",
"push"
]
},
"value": {
"anyOf": [
{
Expand All @@ -36,6 +46,10 @@
"type": "object"
}
]
},
"description": {
"type": "string",
"minLength": 2
}
}
}
Expand Down
20 changes: 15 additions & 5 deletions ext/js/pages/settings/recommended-settings-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ export class RecommendedSettingsController {
this._languageSelect = querySelectorNotNull(document, '#language-select');
/** @type {HTMLInputElement} */
this._applyButton = querySelectorNotNull(document, '#recommended-settings-apply-button');
/** @type {} */
}

/** */
Expand All @@ -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 = `<code>${path}</code> -> <code>${value}</code>`;
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');
Expand All @@ -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;

Check failure on line 91 in ext/js/pages/settings/recommended-settings-controller.js

View workflow job for this annotation

GitHub Actions / Static Analysis

Unsafe assignment of an `any` value
const {action, value} = recommendedSettings.find((setting) => setting.path === path);
modifications.push({action, path, value});

Check failure on line 93 in ext/js/pages/settings/recommended-settings-controller.js

View workflow job for this annotation

GitHub Actions / Static Analysis

Unsafe assignment of an `any` value

Check failure on line 93 in ext/js/pages/settings/recommended-settings-controller.js

View workflow job for this annotation

GitHub Actions / Static Analysis

Unsafe assignment of an `any` value

Check failure on line 93 in ext/js/pages/settings/recommended-settings-controller.js

View workflow job for this annotation

GitHub Actions / Static Analysis

Unsafe assignment of an `any` value
}
void this._settingsController.modifyProfileSettings(modifications);
void this._settingsController.refresh();
}
this._recommendedSettingsModal.hidden = true;
}
Expand Down
4 changes: 4 additions & 0 deletions ext/js/pages/welcome-main.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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';
Expand Down
53 changes: 27 additions & 26 deletions ext/templates-modals.html
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,33 @@ <h1 class="modal-title">Pronunciation Dictionaries</h1>
<button type="button" data-modal-action="hide">Close</button>
</div>
</div></div>

<!-- Recommended settings modal -->
<div id="recommended-settings-modal" class="modal" tabindex="-1" role="dialog" hidden><div class="modal-content">
<div class="modal-header">
<div class="modal-title">Recommended settings</div>
</div>
<div class="modal-body">
<span>We recommend the following settings for your selected language</span>
<div id="recommended-settings-body">
<div class="settings-item">
<div class="settings-item-inner">
<div class="settings-item-left">
<div class="settings-item-label"><strong>Recommendation</strong></div>
</div>
<div class="settings-item-right">
<div class="settings-item-label"><strong>Apply?</strong></div>
</div>
</div>
</div>
<div id="recommended-settings-list"></div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="low-emphasis" data-modal-action="hide">Cancel</button>
<button type="button" id="recommended-settings-apply-button">Apply</button>
</div>
</div></div>
</template>

<template id="settings-modals-template">
Expand Down Expand Up @@ -1472,32 +1499,6 @@ <h1 class="modal-title">Pronunciation Dictionaries</h1>
<button type="button" class="danger" id="hotkey-list-reset" data-modal-action="hide">Reset All</button>
</div>
</div></div>

<!-- Recommended settings modal -->
<div id="recommended-settings-modal" class="modal" tabindex="-1" role="dialog" hidden><div class="modal-content">
<div class="modal-header">
<div class="modal-title">Recommended settings</div>
</div>
<div class="modal-body">
<div id="recommended-settings-body">
<div class="settings-item">
<div class="settings-item-inner">
<div class="settings-item-left">
<div class="settings-item-label"><strong>Recommendation</strong></div>
</div>
<div class="settings-item-right">
<div class="settings-item-label"><strong>Apply?</strong></div>
</div>
</div>
</div>
<div id="recommended-settings-list"></div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="low-emphasis" data-modal-action="hide">Cancel</button>
<button type="button" id="recommended-settings-apply-button">Apply</button>
</div>
</div></div>
</template>

</body></html>

0 comments on commit 0638e64

Please sign in to comment.