aboutsummaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-05-30 16:23:56 -0400
committerGitHub <noreply@github.com>2020-05-30 16:23:56 -0400
commit976a200ffc65e94f0246392f6b29505f1eb4f16c (patch)
treebc33257947294a1ffbccfb036203c0a2f842670d /ext
parentc8810bc92972d14858cdad637eb0a078cae46349 (diff)
Backup update (#582)
* Add function to assign all settings * Update how settings backups are restored * Remove page reload * Update profile index after importing
Diffstat (limited to 'ext')
-rw-r--r--ext/bg/js/backend.js17
-rw-r--r--ext/bg/js/settings/backup.js8
-rw-r--r--ext/bg/js/settings/settings-controller.js17
-rw-r--r--ext/mixed/js/api.js4
4 files changed, 23 insertions, 23 deletions
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js
index 80b00d5f..08ce82a2 100644
--- a/ext/bg/js/backend.js
+++ b/ext/bg/js/backend.js
@@ -122,7 +122,8 @@ class Backend {
['logIndicatorClear', {async: false, contentScript: true, handler: this._onApiLogIndicatorClear.bind(this)}],
['createActionPort', {async: false, contentScript: true, handler: this._onApiCreateActionPort.bind(this)}],
['modifySettings', {async: true, contentScript: true, handler: this._onApiModifySettings.bind(this)}],
- ['getSettings', {async: false, contentScript: true, handler: this._onApiGetSettings.bind(this)}]
+ ['getSettings', {async: false, contentScript: true, handler: this._onApiGetSettings.bind(this)}],
+ ['setAllSettings', {async: true, contentScript: false, handler: this._onApiSetAllSettings.bind(this)}]
]);
this._messageHandlersWithProgress = new Map([
['importDictionaryArchive', {async: true, contentScript: false, handler: this._onApiImportDictionaryArchive.bind(this)}],
@@ -317,15 +318,6 @@ class Backend {
return useSchema ? JsonSchema.createProxy(options, this.optionsSchema) : options;
}
- setFullOptions(options) {
- try {
- this.options = JsonSchema.getValidValueOrDefault(this.optionsSchema, utilIsolate(options));
- } catch (e) {
- // This shouldn't happen, but catch errors just in case of bugs
- yomichan.logError(e);
- }
- }
-
getOptions(optionsContext, useSchema=false) {
return this.getProfile(optionsContext, useSchema).options;
}
@@ -860,6 +852,11 @@ class Backend {
return results;
}
+ async _onApiSetAllSettings({value, source}) {
+ this.options = JsonSchema.getValidValueOrDefault(this.optionsSchema, value);
+ await this._onApiOptionsSave({source});
+ }
+
// Command handlers
_createActionListenerPort(port, sender, handlers) {
diff --git a/ext/bg/js/settings/backup.js b/ext/bg/js/settings/backup.js
index e93e15bf..13f90886 100644
--- a/ext/bg/js/settings/backup.js
+++ b/ext/bg/js/settings/backup.js
@@ -141,7 +141,7 @@ class SettingsBackup {
// Importing
async _settingsImportSetOptionsFull(optionsFull) {
- await this._settingsController.setOptionsFull(optionsFull);
+ await this._settingsController.setAllSettings(optionsFull);
}
_showSettingsImportError(error) {
@@ -340,9 +340,6 @@ class SettingsBackup {
// Assign options
await this._settingsImportSetOptionsFull(optionsFull);
-
- // Reload settings page
- window.location.reload();
}
_onSettingsImportClick() {
@@ -376,8 +373,5 @@ class SettingsBackup {
// Assign options
await this._settingsImportSetOptionsFull(optionsFull);
-
- // Reload settings page
- window.location.reload();
}
}
diff --git a/ext/bg/js/settings/settings-controller.js b/ext/bg/js/settings/settings-controller.js
index 9224aedf..4c902dff 100644
--- a/ext/bg/js/settings/settings-controller.js
+++ b/ext/bg/js/settings/settings-controller.js
@@ -38,9 +38,7 @@ class SettingsController extends EventDispatcher {
set profileIndex(value) {
if (this._profileIndex === value) { return; }
- this._profileIndex = value;
- this.trigger('optionsContextChanged');
- this._onOptionsUpdatedInternal();
+ this._setProfileIndex(value);
}
prepare() {
@@ -69,9 +67,10 @@ class SettingsController extends EventDispatcher {
return utilBackend().getFullOptions();
}
- async setOptionsFull(optionsFull) {
- utilBackend().setFullOptions(utilBackgroundIsolate(optionsFull));
- await this.save();
+ async setAllSettings(value) {
+ const profileIndex = value.profileCurrent;
+ await api.setAllSettings(value, this._source);
+ this._setProfileIndex(profileIndex);
}
async getGlobalSettings(targets) {
@@ -104,6 +103,12 @@ class SettingsController extends EventDispatcher {
// Private
+ _setProfileIndex(value) {
+ this._profileIndex = value;
+ this.trigger('optionsContextChanged');
+ this._onOptionsUpdatedInternal();
+ }
+
_onOptionsUpdated({source}) {
if (source === this._source) { return; }
this._onOptionsUpdatedInternal();
diff --git a/ext/mixed/js/api.js b/ext/mixed/js/api.js
index 2d5ad9e7..075ea545 100644
--- a/ext/mixed/js/api.js
+++ b/ext/mixed/js/api.js
@@ -176,6 +176,10 @@ const api = (() => {
return this._invoke('getSettings', {targets});
}
+ setAllSettings(value, source) {
+ return this._invoke('setAllSettings', {value, source});
+ }
+
// Invoke functions with progress
importDictionaryArchive(archiveContent, details, onProgress) {