Работа над ночным режимом

This commit is contained in:
Book Pauk
2023-01-08 20:08:03 +07:00
parent 91097515f2
commit 9e4be96522
5 changed files with 69 additions and 15 deletions

View File

@@ -1,3 +1,4 @@
import _ from 'lodash';
import * as utils from '../../share/utils';
import googleFonts from './fonts/fonts.json';
@@ -21,6 +22,7 @@ const readerActions = {
'copyText': 'Скопировать текст со страницы',
'convOptions': 'Настроить конвертирование',
'refresh': 'Принудительно обновить книгу',
'nightMode': 'Ночной режим',
'clickControl': 'Управление кликом',
'offlineMode': 'Автономный режим (без интернета)',
'contents': 'Оглавление/закладки',
@@ -57,6 +59,7 @@ const toolButtons = [
{name: 'contents', show: true},
{name: 'libs', show: true},
{name: 'recentBooks', show: true},
{name: 'nightMode', show: true},
{name: 'clickControl', show: true},
{name: 'offlineMode', show: true},
];
@@ -80,6 +83,7 @@ const hotKeys = [
{name: 'contents', codes: ['C']},
{name: 'libs', codes: ['L']},
{name: 'recentBooks', codes: ['X']},
{name: 'nightMode', codes: ['Equal']},
{name: 'clickControl', codes: ['Ctrl+B']},
{name: 'offlineMode', codes: ['O']},
@@ -320,7 +324,7 @@ const state = {
whatsNewContentHash: '',
donationNextPopup: Date.now() + dayMs*30,
currentProfile: '',
settings: Object.assign({}, settingDefaults),
settings: _.cloneDeep(settingDefaults),
settingsRev: {},
libs: false,
libsRev: 0,
@@ -365,14 +369,30 @@ const mutations = {
state.currentProfile = value;
},
setSettings(state, value) {
const newSettings = Object.assign({}, state.settings, value);
let newSettings = Object.assign({}, state.settings, value);
//при смене профиля подгружаются старые настройки, могут отсутствовать атрибуты
//поэтому:
const added = addDefaultsToSettings(newSettings);
if (added)
newSettings = added;
state.settings = newSettings;
},
nightModeToggle(state) {
//переключение режима день-ночь
const prevNightMode = state.settings.nightMode;
if (utils.hasProp(value, 'nightMode') && prevNightMode != value.nightMode) {
saveColorSets(prevNightMode, newSettings);
restoreColorSets(newSettings.nightMode, newSettings);
const newSettings = Object.assign({}, state.settings);
saveColorSets(newSettings.nightMode, newSettings);
newSettings.nightMode = !newSettings.nightMode;
if (newSettings.nightMode && !utils.hasProp(newSettings.nightColorSets, 'textColor')) {
// Ночной режим активирован впервые. Цвета заданы по умолчанию.
newSettings.nightColorSets = {textColor: '#778a9e', backgroundColor: '#363131'};
}
restoreColorSets(newSettings.nightMode, newSettings);
state.settings = newSettings;
},
setSettingsRev(state, value) {