aboutsummaryrefslogtreecommitdiff
path: root/ext/bg/js
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-12-06 21:17:05 -0500
committerGitHub <noreply@github.com>2020-12-06 21:17:05 -0500
commit35fbc76df441756e5044bcc9784ab3219a8d6701 (patch)
treea9f102238ae21836c89ca41e5f93a87a34797e1a /ext/bg/js
parent88b8191ac2946c02ef8f9a73cd2c4050b1f02f61 (diff)
Settings v2 testing setup (#1084)
* Add option for using settings v2 * Add options/info about settings v2 * Use settings v2 URL when applicable * Update tests
Diffstat (limited to 'ext/bg/js')
-rw-r--r--ext/bg/js/backend.js15
-rw-r--r--ext/bg/js/context-main.js4
-rw-r--r--ext/bg/js/options.js2
3 files changed, 19 insertions, 2 deletions
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js
index f9c308e5..012036dc 100644
--- a/ext/bg/js/backend.js
+++ b/ext/bg/js/backend.js
@@ -790,12 +790,25 @@ class Backend {
}
_onCommandOptions(params) {
+ const {useSettingsV2} = this._options.global;
const {mode='existingOrNewTab'} = params || {};
if (mode === 'existingOrNewTab') {
+ if (useSettingsV2) {
+ (async () => {
+ const url = chrome.runtime.getURL('/bg/settings2.html');
+ const tab = await this._findTab(1000, (url2) => url2.startsWith(url));
+ if (tab !== null) {
+ await this._focusTab(tab);
+ } else {
+ chrome.tabs.create({url});
+ }
+ })();
+ return;
+ }
chrome.runtime.openOptionsPage();
} else if (mode === 'newTab') {
const manifest = chrome.runtime.getManifest();
- const url = chrome.runtime.getURL(manifest.options_ui.page);
+ const url = chrome.runtime.getURL(useSettingsV2 ? '/bg/settings2.html' : manifest.options_ui.page);
chrome.tabs.create({url});
}
}
diff --git a/ext/bg/js/context-main.js b/ext/bg/js/context-main.js
index 93eebe72..b6736fd8 100644
--- a/ext/bg/js/context-main.js
+++ b/ext/bg/js/context-main.js
@@ -30,12 +30,14 @@ class DisplayController {
this._showExtensionInfo(manifest);
this._setupEnvironment();
this._setupButtonEvents('.action-open-search', 'search', chrome.runtime.getURL('/bg/search.html'));
- this._setupButtonEvents('.action-open-options', 'options', chrome.runtime.getURL(manifest.options_ui.page));
this._setupButtonEvents('.action-open-help', 'help', 'https://foosoft.net/projects/yomichan/');
const optionsFull = await api.optionsGetFull();
this._optionsFull = optionsFull;
+ const optionsPageUrl = optionsFull.global.useSettingsV2 ? '/bg/settings2.html' : manifest.options_ui.page;
+ this._setupButtonEvents('.action-open-options', 'options', chrome.runtime.getURL(optionsPageUrl));
+
const {profiles, profileCurrent} = optionsFull;
const primaryProfile = (profileCurrent >= 0 && profileCurrent < profiles.length) ? profiles[profileCurrent] : null;
if (primaryProfile !== null) {
diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js
index dcc8471a..5fb10516 100644
--- a/ext/bg/js/options.js
+++ b/ext/bg/js/options.js
@@ -613,10 +613,12 @@ class OptionsUtil {
// Version 6 changes:
// Updated handlebars templates to include "conjugation" definition.
// Added global option showPopupPreview.
+ // Added global option useSettingsV2.
// Added anki.checkForDuplicates.
// Added general.glossaryLayoutMode; removed general.compactGlossaries.
await this._addFieldTemplatesToOptions(options, '/bg/data/anki-field-templates-upgrade-v6.handlebars');
options.global.showPopupPreview = false;
+ options.global.useSettingsV2 = false;
for (const profile of options.profiles) {
profile.options.anki.checkForDuplicates = true;
profile.options.general.glossaryLayoutMode = (profile.options.general.compactGlossaries ? 'compact' : 'default');