Добавлено восстановление дефолтных настроек в объекте settings при их отсутствии

This commit is contained in:
Book Pauk
2020-11-03 00:00:31 +07:00
parent fdf5009999
commit 8b66fd522d
3 changed files with 37 additions and 12 deletions

View File

@@ -331,6 +331,12 @@ class Reader extends Vue {
this.checkActivateDonateHelpPage(); this.checkActivateDonateHelpPage();
this.loading = false; this.loading = false;
//проверим состояние Settings, и обновим, если надо
const newSettings = rstore.addDefaultsToSettings(this.settings);
if (newSettings) {
this.commit('reader/setSettings', newSettings);
}
this.updateRoute(); this.updateRoute();
await this.showWhatsNew(); await this.showWhatsNew();

View File

@@ -505,7 +505,7 @@ class ServerStorage extends Vue {
const md = newRecentMod.data; const md = newRecentMod.data;
if (md.key && result[md.key]) 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) { if (!bookManager.loaded) {
this.warning('Ожидание загрузки списка книг перед синхронизацией'); this.warning('Ожидание загрузки списка книг перед синхронизацией');
@@ -569,7 +569,7 @@ class ServerStorage extends Vue {
let applyMod = this.cachedRecentMod.data; let applyMod = this.cachedRecentMod.data;
if (applyMod && applyMod.key && newRecentPatch.data[applyMod.key]) 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: {}}; newRecentMod = {rev: this.cachedRecentMod.rev + 1, data: {}};
needSaveRecentPatch = true; needSaveRecentPatch = true;

View File

@@ -1,3 +1,5 @@
import * as utils from '../../share/utils';
const readerActions = { const readerActions = {
'help': 'Вызвать cправку', 'help': 'Вызвать cправку',
'loader': 'На страницу загрузки', 'loader': 'На страницу загрузки',
@@ -256,6 +258,25 @@ const settingDefaults = {
userHotKeys: {}, 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 = { const libsDefaults = {
startLink: 'http://flibusta.is', startLink: 'http://flibusta.is',
comment: 'Флибуста | Книжное братство', 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 // initial state
const state = { const state = {
toolBarActive: true, toolBarActive: true,
@@ -341,7 +353,13 @@ const mutations = {
state.currentProfile = value; state.currentProfile = value;
}, },
setSettings(state, 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) { setSettingsRev(state, value) {
state.settingsRev = Object.assign({}, state.settingsRev, value); state.settingsRev = Object.assign({}, state.settingsRev, value);
@@ -361,6 +379,7 @@ export default {
fonts, fonts,
webFonts, webFonts,
settingDefaults, settingDefaults,
addDefaultsToSettings,
libsDefaults, libsDefaults,
namespaced: true, namespaced: true,