diff --git a/src/modules/default_config_state.js b/src/modules/default_config_state.js index fbfaf08a3..bc2465e70 100644 --- a/src/modules/default_config_state.js +++ b/src/modules/default_config_state.js @@ -49,8 +49,6 @@ export const instanceDefaultConfig = { hideScrobbles: false, hideScrobblesAfter: '2d', maxThumbnails: 16, - hideNsfw: true, - preloadImage: true, loopVideo: true, loopVideoSilentOnly: true, /// This is not the streaming API configuration, but rather an option @@ -121,7 +119,6 @@ export const instanceDefaultConfig = { modalMobileCenter: false, playVideosInModal: false, - useOneClickNsfw: false, useContainFit: true, disableStickyHeaders: false, showScrollbars: false, @@ -165,6 +162,9 @@ export const instanceDefaultConfig = { export const defaultConfigLocal = { hideAttachments: false, hideAttachmentsInConv: false, + hideNsfw: true, + useOneClickNsfw: false, + preloadImage: true, postContentType: 'text/plain', sidebarRight: false, sidebarColumnWidth: '25rem', diff --git a/src/modules/old_default_config_state.js b/src/modules/old_default_config_state.js index e53cafe29..6e0e730de 100644 --- a/src/modules/old_default_config_state.js +++ b/src/modules/old_default_config_state.js @@ -18,8 +18,6 @@ export const defaultConfigSync = { hideScrobbles: false, hideScrobblesAfter: '2d', maxThumbnails: 16, - hideNsfw: true, - preloadImage: true, loopVideo: true, loopVideoSilentOnly: true, /// This is not the streaming API configuration, but rather an option @@ -93,7 +91,6 @@ export const defaultConfigSync = { modalMobileCenter: false, playVideosInModal: false, - useOneClickNsfw: false, useContainFit: true, disableStickyHeaders: false, showScrollbars: false, @@ -169,6 +166,9 @@ export const defaultConfigSync = { export const defaultConfigLocal = { hideAttachments: false, hideAttachmentsInConv: false, + hideNsfw: true, + useOneClickNsfw: false, + preloadImage: true, sidebarColumnWidth: '25rem', contentColumnWidth: '45rem', notifsColumnWidth: '25rem', diff --git a/src/stores/sync_config.js b/src/stores/sync_config.js index 27cd53a59..51327c389 100644 --- a/src/stores/sync_config.js +++ b/src/stores/sync_config.js @@ -21,7 +21,7 @@ import { useInstanceStore } from 'src/stores/instance.js' import { useLocalConfigStore } from 'src/stores/local_config.js' import { storage } from 'src/lib/storage.js' -import { defaultState as configDefaultState } from 'src/modules/default_config_state.js' +import { defaultState as configDefaultState, makeUndefined, defaultConfigLocal } from 'src/modules/default_config_state.js' import { defaultConfigSync } from 'src/modules/old_default_config_state.js' export const VERSION = 2 @@ -31,6 +31,7 @@ export const COMMAND_TRIM_FLAGS = 1000 export const COMMAND_TRIM_FLAGS_AND_RESET = 1001 export const COMMAND_WIPE_JOURNAL = 1010 export const COMMAND_WIPE_JOURNAL_AND_STORAGE = 1011 +const LOCAL_ONLY_KEYS = new Set(Object.keys(defaultConfigLocal)) export const defaultState = { // do we need to update data on server? @@ -49,7 +50,7 @@ export const defaultState = { dontShowUpdateNotifs: false, collapseNav: false, muteFilters: {}, - ...configDefaultState, + ...makeUndefined(configDefaultState), }, collections: { pinnedStatusActions: ['reply', 'retweet', 'favorite', 'emoji'], @@ -636,6 +637,7 @@ export const useSyncConfigStore = defineStore('sync_config', { needUpload = true } }) + vuexState.config._syncMigration = [...migratedEntries] storage.setItem('vuex-lz', vuexState) @@ -716,9 +718,11 @@ export const useSyncConfigStore = defineStore('sync_config', { const localPrefs = useLocalConfigStore().prefsStorage const tempPrefs = useLocalConfigStore().tempStorage const result = Object.fromEntries( - Object.entries(state.prefsStorage.simple).map(([k, v]) => [ + Object.entries(state.prefsStorage.simple).map(([k, value]) => [ k, - tempPrefs[k] ?? localPrefs[k] ?? v ?? instancePrefs[k], + LOCAL_ONLY_KEYS.has(k) + ? tempPrefs[k] ?? localPrefs[k] ?? instancePrefs[k] + : tempPrefs[k] ?? localPrefs[k] ?? value ?? instancePrefs[k], ]), ) return result