diff options
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/config.js | 53 | ||||
| -rw-r--r-- | src/modules/instance.js | 12 | ||||
| -rw-r--r-- | src/modules/interface.js | 14 |
3 files changed, 73 insertions, 6 deletions
diff --git a/src/modules/config.js b/src/modules/config.js index 8001b854..a977c9c5 100644 --- a/src/modules/config.js +++ b/src/modules/config.js @@ -115,7 +115,12 @@ export const defaultState = { sidebarColumnWidth: '25rem', contentColumnWidth: '45rem', notifsColumnWidth: '25rem', - emojiReactionsScale: 1.0, + emojiReactionsScale: undefined, + textSize: undefined, // instance default + emojiSize: undefined, // instance default + navbarSize: undefined, // instance default + panelHeaderSize: undefined, // instance default + forcedRoundness: undefined, // instance default navbarColumnStretch: false, greentext: undefined, // instance default useAtIcon: undefined, // instance default @@ -142,6 +147,7 @@ export const defaultState = { maxDepthInThread: undefined, // instance default autocompleteSelect: undefined, // instance default closingDrawerMarksAsSeen: undefined, // instance default + themeDebug: false, unseenAtTop: undefined, // instance default ignoreInactionableSeen: undefined // instance default } @@ -173,6 +179,10 @@ const config = { } }, mutations: { + setOptionTemporarily (state, { name, value }) { + set(state, name, value) + applyConfig(state) + }, setOption (state, { name, value }) { set(state, name, value) }, @@ -203,6 +213,31 @@ const config = { setHighlight ({ commit, dispatch }, { user, color, type }) { commit('setHighlight', { user, color, type }) }, + setOptionTemporarily ({ commit, dispatch, state, rootState }, { name, value }) { + if (rootState.interface.temporaryChangesTimeoutId !== null) { + console.warn('Can\'t track more than one temporary change') + return + } + const oldValue = state[name] + + commit('setOptionTemporarily', { name, value }) + + const confirm = () => { + dispatch('setOption', { name, value }) + commit('clearTemporaryChanges') + } + + const revert = () => { + commit('setOptionTemporarily', { name, value: oldValue }) + commit('clearTemporaryChanges') + } + + commit('setTemporaryChanges', { + timeoutId: setTimeout(revert, 10000), + confirm, + revert + }) + }, setOption ({ commit, dispatch, state }, { name, value }) { const exceptions = new Set([ 'useStreamingApi' @@ -231,13 +266,25 @@ const config = { case 'sidebarColumnWidth': case 'contentColumnWidth': case 'notifsColumnWidth': + case 'textSize': + case 'navbarSize': + case 'panelHeaderSize': + case 'forcedRoundness': + case 'emojiSize': case 'emojiReactionsScale': applyConfig(state) break case 'customTheme': - case 'customThemeSource': - applyTheme(value) + case 'customThemeSource': { + const { themeDebug } = state + applyTheme(value, () => {}, themeDebug) break + } + case 'themeDebug': { + const { customTheme, customThemeSource } = state + applyTheme(customTheme || customThemeSource, () => {}, value) + break + } case 'interfaceLanguage': messages.setLanguage(this.getters.i18n, value) dispatch('loadUnicodeEmojiData', value) diff --git a/src/modules/instance.js b/src/modules/instance.js index 0a5c1ae7..6997e75d 100644 --- a/src/modules/instance.js +++ b/src/modules/instance.js @@ -98,6 +98,12 @@ const defaultState = { sidebarRight: false, subjectLineBehavior: 'email', theme: 'pleroma-dark', + emojiReactionsScale: 0.5, + textSize: '14px', + emojiSize: '2.2rem', + navbarSize: '3.5rem', + panelHeaderSize: '3.2rem', + forcedRoundness: -1, virtualScrolling: true, sensitiveByDefault: false, conversationDisplay: 'linear', @@ -377,16 +383,16 @@ const instance = { .then(themeData => { commit('setInstanceOption', { name: 'themeData', value: themeData }) // No need to apply theme if there's user theme already - const { customTheme } = rootState.config + const { customTheme, themeDebug } = rootState.config const { themeApplied } = rootState.interface if (customTheme || themeApplied) return // New theme presets don't have 'theme' property, they use 'source' const themeSource = themeData.source if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) { - applyTheme(themeSource) + applyTheme(themeSource, null, themeDebug) } else { - applyTheme(themeData.theme) + applyTheme(themeData.theme, null, themeDebug) } commit('setThemeApplied') }) diff --git a/src/modules/interface.js b/src/modules/interface.js index 39242b9d..e21b4204 100644 --- a/src/modules/interface.js +++ b/src/modules/interface.js @@ -1,5 +1,8 @@ const defaultState = { themeApplied: false, + temporaryChangesTimeoutId: null, // used for temporary options that revert after a timeout + temporaryChangesConfirm: () => {}, // used for applying temporary options + temporaryChangesRevert: () => {}, // used for reverting temporary options settingsModalState: 'hidden', settingsModalLoadedUser: false, settingsModalLoadedAdmin: false, @@ -36,6 +39,17 @@ const interfaceMod = { state.settings.currentSaveStateNotice = { error: true, errorData: error } } }, + setTemporaryChanges (state, { timeoutId, confirm, revert }) { + state.temporaryChangesTimeoutId = timeoutId + state.temporaryChangesConfirm = confirm + state.temporaryChangesRevert = revert + }, + clearTemporaryChanges (state) { + clearTimeout(state.temporaryChangesTimeoutId) + state.temporaryChangesTimeoutId = null + state.temporaryChangesConfirm = () => {} + state.temporaryChangesRevert = () => {} + }, setThemeApplied (state) { state.themeApplied = true }, |
