functionality to force other sessions to wipe journals

This commit is contained in:
Henry Jameson 2026-02-24 21:12:08 +02:00
commit 406df8c27a
2 changed files with 26 additions and 6 deletions

View file

@ -49,6 +49,7 @@
:is-local="status.is_local" :is-local="status.is_local"
@parse-ready="onParseReady" @parse-ready="onParseReady"
/> />
{{ mergedConfig }}
<div <div
v-show="shouldShowToggle" v-show="shouldShowToggle"
:class="toggleButtonClasses" :class="toggleButtonClasses"

View file

@ -26,6 +26,8 @@ export const NEW_USER_DATE = new Date('2022-08-04') // date of writing this, bas
export const COMMAND_TRIM_FLAGS = 1000 export const COMMAND_TRIM_FLAGS = 1000
export const COMMAND_TRIM_FLAGS_AND_RESET = 1001 export const COMMAND_TRIM_FLAGS_AND_RESET = 1001
export const COMMAND_WIPE_JOURNAL = 1010
export const COMMAND_WIPE_JOURNAL_AND_STORAGE = 1011
export const defaultState = { export const defaultState = {
// do we need to update data on server? // do we need to update data on server?
@ -34,7 +36,7 @@ export const defaultState = {
flagStorage: { flagStorage: {
updateCounter: 0, // Counter for most recent update notification seen updateCounter: 0, // Counter for most recent update notification seen
configMigration: 0, // Counter for config -> server-side migrations configMigration: 0, // Counter for config -> server-side migrations
reset: 0, // special flag that can be used to force-reset all flags, debug purposes only reset: 0, // special flag that can be used to force-reset all data, debug purposes only
// special reset codes: // special reset codes:
// 1000: trim keys to those known by currently running FE // 1000: trim keys to those known by currently running FE
// 1001: same as above + reset everything to 0 // 1001: same as above + reset everything to 0
@ -379,16 +381,30 @@ export const _resetFlags = (
result[flag] = 0 result[flag] = 0
}) })
} }
} else if (totalFlags.reset > 0 && totalFlags.reset < 9000) {
console.debug('Received command to reset the flags')
allFlagKeys.forEach((flag) => {
result[flag] = 0
})
} }
result.reset = 0 result.reset = 0
return result return result
} }
export const _resetPrefs = (
totalFlags,
totalPrefs,
knownKeys = defaultState.flagStorage,
) => {
// prefs reset functionality
if (
totalFlags.reset >= COMMAND_WIPE_JOURNAL &&
totalFlags.reset <= COMMAND_WIPE_JOURNAL_AND_STORAGE
) {
console.debug('Received command to reset journals')
clearJournals()
if (totalFlags.reset === COMMAND_WIPE_JOURNAL_AND_STORAGE) {
console.debug('Received command to reset storage')
return cloneDeep(defaultState)
}
} return totalPrefs
}
export const _doMigrations = (cache, live) => { export const _doMigrations = (cache, live) => {
const data = cache ?? live const data = cache ?? live
@ -578,8 +594,10 @@ export const useSyncConfigStore = defineStore('sync_config', {
Object.keys(this).forEach((k) => { Object.keys(this).forEach((k) => {
this[k] = blankState[k] this[k] = blankState[k]
}) })
this.flagStorage.reset = COMMAND_WIPE_JOURNAL_AND_STORAGE
}, },
clearJournals() { clearJournals() {
this.flagStorage.reset = COMMAND_WIPE_JOURNAL
this.prefsStorage._journal = [] this.prefsStorage._journal = []
this.cache.prefsStorage._journal = [] this.cache.prefsStorage._journal = []
this.raw.prefsStorage._journal = [] this.raw.prefsStorage._journal = []
@ -639,6 +657,7 @@ export const useSyncConfigStore = defineStore('sync_config', {
totalPrefs = recent.prefsStorage totalPrefs = recent.prefsStorage
} }
totalPrefs = _resetPrefs(totalPrefs, totalFlags)
totalFlags = _resetFlags(totalFlags) totalFlags = _resetFlags(totalFlags)
recent.flagStorage = { ...flagsTemplate, ...totalFlags } recent.flagStorage = { ...flagsTemplate, ...totalFlags }