From 8b66fd522da4ddc4ea6d588dea08750b91d13261 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 3 Nov 2020 00:00:31 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B2=D0=BE=D1=81=D1=81=D1=82=D0=B0=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=B5=D1=84=D0=BE?= =?UTF-8?q?=D0=BB=D1=82=D0=BD=D1=8B=D1=85=20=D0=BD=D0=B0=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BA=20=D0=B2=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B5=20settings=20=D0=BF=D1=80=D0=B8=20=D0=B8=D1=85=20?= =?UTF-8?q?=D0=BE=D1=82=D1=81=D1=83=D1=82=D1=81=D1=82=D0=B2=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/Reader.vue | 6 +++ .../Reader/ServerStorage/ServerStorage.vue | 4 +- client/store/modules/reader.js | 39 ++++++++++++++----- 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index b557e880..c3a6fdf2 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -331,6 +331,12 @@ class Reader extends Vue { this.checkActivateDonateHelpPage(); this.loading = false; + //проверим состояние Settings, и обновим, если надо + const newSettings = rstore.addDefaultsToSettings(this.settings); + if (newSettings) { + this.commit('reader/setSettings', newSettings); + } + this.updateRoute(); await this.showWhatsNew(); diff --git a/client/components/Reader/ServerStorage/ServerStorage.vue b/client/components/Reader/ServerStorage/ServerStorage.vue index b6092ddb..7a17af30 100644 --- a/client/components/Reader/ServerStorage/ServerStorage.vue +++ b/client/components/Reader/ServerStorage/ServerStorage.vue @@ -505,7 +505,7 @@ class ServerStorage extends Vue { const md = newRecentMod.data; if (md.key && result[md.key]) - result[md.key] = utils.applyObjDiff(result[md.key], md.mod, true); + result[md.key] = utils.applyObjDiff(result[md.key], md.mod, {isAddChanged: true}); if (!bookManager.loaded) { this.warning('Ожидание загрузки списка книг перед синхронизацией'); @@ -569,7 +569,7 @@ class ServerStorage extends Vue { let applyMod = this.cachedRecentMod.data; if (applyMod && applyMod.key && newRecentPatch.data[applyMod.key]) - newRecentPatch.data[applyMod.key] = utils.applyObjDiff(newRecentPatch.data[applyMod.key], applyMod.mod, true); + newRecentPatch.data[applyMod.key] = utils.applyObjDiff(newRecentPatch.data[applyMod.key], applyMod.mod, {isAddChanged: true}); newRecentMod = {rev: this.cachedRecentMod.rev + 1, data: {}}; needSaveRecentPatch = true; diff --git a/client/store/modules/reader.js b/client/store/modules/reader.js index d75aa62b..a120851f 100644 --- a/client/store/modules/reader.js +++ b/client/store/modules/reader.js @@ -1,3 +1,5 @@ +import * as utils from '../../share/utils'; + const readerActions = { 'help': 'Вызвать cправку', 'loader': 'На страницу загрузки', @@ -256,6 +258,25 @@ const settingDefaults = { userHotKeys: {}, }; +for (const font of fonts) + settingDefaults.fontShifts[font.name] = font.fontVertShift; +for (const font of webFonts) + settingDefaults.fontShifts[font.name] = font.fontVertShift; +for (const button of toolButtons) + settingDefaults.showToolButton[button.name] = button.show; +for (const hotKey of hotKeys) + settingDefaults.userHotKeys[hotKey.name] = hotKey.codes; + +function addDefaultsToSettings(settings) { + const diff = utils.getObjDiff(settings, settingDefaults); + + if (!utils.isEmptyObjDiffDeep(diff, {isApplyChange: false})) { + return utils.applyObjDiff(settings, diff, {isApplyChange: false}); + } + + return false; +} + const libsDefaults = { startLink: 'http://flibusta.is', comment: 'Флибуста | Книжное братство', @@ -279,15 +300,6 @@ const libsDefaults = { ] }; -for (const font of fonts) - settingDefaults.fontShifts[font.name] = font.fontVertShift; -for (const font of webFonts) - settingDefaults.fontShifts[font.name] = font.fontVertShift; -for (const button of toolButtons) - settingDefaults.showToolButton[button.name] = button.show; -for (const hotKey of hotKeys) - settingDefaults.userHotKeys[hotKey.name] = hotKey.codes; - // initial state const state = { toolBarActive: true, @@ -341,7 +353,13 @@ const mutations = { state.currentProfile = value; }, setSettings(state, value) { - state.settings = Object.assign({}, state.settings, value); + const newSettings = Object.assign({}, state.settings, value); + const added = addDefaultsToSettings(newSettings); + if (added) { + state.settings = added; + } else { + state.settings = newSettings; + } }, setSettingsRev(state, value) { state.settingsRev = Object.assign({}, state.settingsRev, value); @@ -361,6 +379,7 @@ export default { fonts, webFonts, settingDefaults, + addDefaultsToSettings, libsDefaults, namespaced: true,