From e1745ea23cb16e56e042fc2708e6c52516bfc965 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sat, 12 Apr 2025 11:13:36 +0100 Subject: [PATCH] sort our store/prefs, migrate all of them also fix `cornerRadius` --- .../src/pages/settings/preferences.vue | 22 +-- packages/frontend/src/pref-migrate.ts | 35 +++-- packages/frontend/src/preferences/def.ts | 129 +++++++++--------- packages/frontend/src/store.ts | 117 ++++++++-------- 4 files changed, 158 insertions(+), 145 deletions(-) diff --git a/packages/frontend/src/pages/settings/preferences.vue b/packages/frontend/src/pages/settings/preferences.vue index 0d3ead9218..4f0a785091 100644 --- a/packages/frontend/src/pages/settings/preferences.vue +++ b/packages/frontend/src/pages/settings/preferences.vue @@ -725,13 +725,11 @@ SPDX-License-Identifier: AGPL-3.0-only - - - - - - - + + + + + @@ -972,9 +970,9 @@ const notificationClickable = computed(store.makeGetterSetter('notificationClick const warnExternalUrl = prefer.model('warnExternalUrl'); const showVisibilitySelectorOnBoost = prefer.model('showVisibilitySelectorOnBoost'); const visibilityOnBoost = prefer.model('visibilityOnBoost'); -const cornerRadius = computed(store.makeGetterSetter('cornerRadius')); const oneko = computed(store.makeGetterSetter('oneko')); const numberOfReplies = computed(store.makeGetterSetter('numberOfReplies')); +const cornerRadius = ref(miLocalStorage.getItem('cornerRadius')); const useCustomSearchEngine = computed(() => !Object.keys(searchEngineMap).includes(searchEngine.value)); @@ -1000,6 +998,14 @@ watch(useSystemFont, () => { } }); +watch(cornerRadius, () => { + if (cornerRadius.value == null) { + miLocalStorage.removeItem('cornerRadius'); + } else { + miLocalStorage.setItem('cornerRadius', cornerRadius.value); + } +}); + watch([ hemisphere, lang, diff --git a/packages/frontend/src/pref-migrate.ts b/packages/frontend/src/pref-migrate.ts index ed08d5382f..35397b6246 100644 --- a/packages/frontend/src/pref-migrate.ts +++ b/packages/frontend/src/pref-migrate.ts @@ -134,23 +134,30 @@ export function migrateOldSettings() { prefer.commit('sound.on.reaction', store.s.sound_reaction as any); prefer.commit('defaultNoteVisibility', store.s.defaultNoteVisibility); prefer.commit('defaultNoteLocalOnly', store.s.defaultNoteLocalOnly); - // Sharkey migrations - prefer.commit('collapseNotesRepliedTo', store.s.collapseNotesRepliedTo); - prefer.commit('collapseFiles', store.s.collapseFiles); - prefer.commit('uncollapseCW', store.s.uncollapseCW); - prefer.commit('expandLongNote', store.s.expandLongNote); - prefer.commit('like', store.s.like); + + //#region Sharkey migrations prefer.commit('autoloadConversation', store.s.autoloadConversation); - prefer.commit('showVisibilitySelectorOnBoost', store.s.showVisibilitySelectorOnBoost); - prefer.commit('visibilityOnBoost', store.s.visibilityOnBoost); - prefer.commit('trustedDomains', store.s.trustedDomains); - prefer.commit('warnExternalUrl', store.s.warnExternalUrl); - prefer.commit('followingFeed', store.s.followingFeed); - prefer.commit('warnMissingAltText', store.s.warnMissingAltText); + prefer.commit('clickToOpen', store.s.clickToOpen); + prefer.commit('collapseFiles', store.s.collapseFiles); + prefer.commit('collapseNotesRepliedTo', store.s.collapseNotesRepliedTo); prefer.commit('disableCatSpeak', store.s.disableCatSpeak); - prefer.commit('showTickerOnReplies', store.s.showTickerOnReplies); - prefer.commit('searchEngine', store.s.searchEngine); + prefer.commit('enableFaviconNotificationDot', store.s.enableFaviconNotificationDot); + prefer.commit('expandLongNote', store.s.expandLongNote); + prefer.commit('followingFeed', store.s.followingFeed); + prefer.commit('like', store.s.like); prefer.commit('noteDesign', store.s.noteDesign); + prefer.commit('notificationClickable', store.s.notificationClickable); + prefer.commit('numberOfReplies', store.s.numberOfReplies); + prefer.commit('oneko', store.s.oneko); + prefer.commit('searchEngine', store.s.searchEngine); + prefer.commit('showTickerOnReplies', store.s.showTickerOnReplies); + prefer.commit('showVisibilitySelectorOnBoost', store.s.showVisibilitySelectorOnBoost); + prefer.commit('trustedDomains', store.s.trustedDomains); + prefer.commit('uncollapseCW', store.s.uncollapseCW); + prefer.commit('visibilityOnBoost', store.s.visibilityOnBoost); + prefer.commit('warnExternalUrl', store.s.warnExternalUrl); + prefer.commit('warnMissingAltText', store.s.warnMissingAltText); + //#endregion window.setTimeout(() => { unisonReload(); diff --git a/packages/frontend/src/preferences/def.ts b/packages/frontend/src/preferences/def.ts index f7eb299bb7..063f3b60b8 100644 --- a/packages/frontend/src/preferences/def.ts +++ b/packages/frontend/src/preferences/def.ts @@ -130,54 +130,6 @@ export const PREF_DEF = { collapseRenotes: { default: false, }, - collapseNotesRepliedTo: { - default: false, - }, - collapseFiles: { - default: false, - }, - uncollapseCW: { - default: false, - }, - expandLongNote: { - default: false, - }, - like: { - default: null as string | null, - }, - autoloadConversation: { - default: true, - }, - showVisibilitySelectorOnBoost: { - default: true, - }, - visibilityOnBoost: { - default: 'public' as 'public' | 'home' | 'followers', - }, - trustedDomains: { - default: [] as string[], - }, - warnExternalUrl: { - default: true, - }, - followingFeed: { - default: defaultFollowingFeedState as Partial, - }, - warnMissingAltText: { - default: true, - }, - disableCatSpeak: { - default: false, - }, - showTickerOnReplies: { - default: false, - }, - searchEngine: { - default: Object.keys(searchEngineMap)[0], - }, - noteDesign: { - default: 'sharkey' as 'sharkey' | 'misskey', - }, menu: { default: [ 'notifications', @@ -208,9 +160,6 @@ export const PREF_DEF = { nsfw: { default: 'respect' as 'respect' | 'force' | 'ignore', }, - numberOfReplies: { - default: 5, - }, highlightSensitiveMedia: { default: false, }, @@ -307,9 +256,6 @@ export const PREF_DEF = { forceShowAds: { default: false, }, - oneko: { - default: false, - }, aiChanMode: { default: false, }, @@ -337,12 +283,6 @@ export const PREF_DEF = { useGroupedNotifications: { default: true, }, - notificationClickable: { - default: false, - }, - enableFaviconNotificationDot: { - default: true, - }, dataSaver: { default: { media: false, @@ -357,9 +297,6 @@ export const PREF_DEF = { enableSeasonalScreenEffect: { default: false, }, - cornerRadius: { - default: null as 'Misskey' | null, - }, enableHorizontalSwipe: { default: true, }, @@ -467,4 +404,70 @@ export const PREF_DEF = { 'experimental.stackingRouterView': { default: false, }, + + //#region Sharkey + autoloadConversation: { + default: true, + }, + clickToOpen: { + default: true, + }, + collapseFiles: { + default: false, + }, + collapseNotesRepliedTo: { + default: false, + }, + disableCatSpeak: { + default: false, + }, + enableFaviconNotificationDot: { + default: true, + }, + expandLongNote: { + default: false, + }, + followingFeed: { + default: defaultFollowingFeedState as Partial, + }, + like: { + default: null as string | null, + }, + noteDesign: { + default: 'sharkey' as 'sharkey' | 'misskey', + }, + notificationClickable: { + default: false, + }, + numberOfReplies: { + default: 5, + }, + oneko: { + default: false, + }, + searchEngine: { + default: Object.keys(searchEngineMap)[0], + }, + showTickerOnReplies: { + default: false, + }, + showVisibilitySelectorOnBoost: { + default: true, + }, + trustedDomains: { + default: [] as string[], + }, + uncollapseCW: { + default: false, + }, + visibilityOnBoost: { + default: 'public' as 'public' | 'home' | 'followers', + }, + warnExternalUrl: { + default: true, + }, + warnMissingAltText: { + default: true, + }, + //#endregion } satisfies PreferencesDefinition; diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts index cbb14ae33a..9aa72152b1 100644 --- a/packages/frontend/src/store.ts +++ b/packages/frontend/src/store.ts @@ -471,92 +471,89 @@ export const store = markRaw(new Pizzax('base', { }, }, //#endregion + //#region Sharkey - collapseNotesRepliedTo: { + autoloadConversation: { where: 'device', - default: false, + default: true, + }, + clickToOpen: { + where: 'device', + default: true, }, collapseFiles: { where: 'device', default: false, }, - uncollapseCW: { + collapseNotesRepliedTo: { where: 'device', default: false, }, - expandLongNote: { - where: 'device', - default: false, - }, - like: { - where: 'device', - default: null as string | null, - }, - autoloadConversation: { - where: 'device', - default: true, - }, - showVisibilitySelectorOnBoost: { - where: 'device', - default: true, - }, - visibilityOnBoost: { - where: 'device', - default: 'public' as 'public' | 'home' | 'followers', - }, - trustedDomains: { - where: 'device', - default: [] as string[], - }, - warnExternalUrl: { - where: 'device', - default: true, - }, - followingFeed: { - where: 'device', - default: defaultFollowingFeedState as Partial, - }, - warnMissingAltText: { - where: 'device', - default: true, - }, disableCatSpeak: { where: 'device', default: false, }, - showTickerOnReplies: { - where: 'device', - default: false, - }, - searchEngine: { - where: 'device', - default: Object.keys(searchEngineMap)[0], - }, - noteDesign: { - where: 'device', - default: 'sharkey' as 'sharkey' | 'misskey', - }, - oneko: { - where: 'device', - default: false, - }, enableFaviconNotificationDot: { where: 'device', default: true, }, - numberOfReplies: { + expandLongNote: { where: 'device', - default: 5, + default: false, + }, + followingFeed: { + where: 'device', + default: defaultFollowingFeedState as Partial, + }, + like: { + where: 'device', + default: null as string | null, + }, + noteDesign: { + where: 'device', + default: 'sharkey' as 'sharkey' | 'misskey', }, notificationClickable: { where: 'device', default: false, }, - cornerRadius: { + numberOfReplies: { where: 'device', - default: null as 'Misskey' | null, + default: 5, }, - clickToOpen: { + oneko: { + where: 'device', + default: false, + }, + searchEngine: { + where: 'device', + default: Object.keys(searchEngineMap)[0], + }, + showTickerOnReplies: { + where: 'device', + default: false, + }, + showVisibilitySelectorOnBoost: { + where: 'device', + default: true, + }, + trustedDomains: { + where: 'device', + default: [] as string[], + }, + uncollapseCW: { + where: 'device', + default: false, + }, + visibilityOnBoost: { + where: 'device', + default: 'public' as 'public' | 'home' | 'followers', + }, + warnExternalUrl: { + where: 'device', + default: true, + }, + warnMissingAltText: { where: 'device', default: true, },