diff --git a/packages/spotlight/src/modes/command/children/preferences/settings-children.tsx b/packages/spotlight/src/modes/command/children/preferences/settings-children.tsx index 04b4bdb31..fc0760583 100644 --- a/packages/spotlight/src/modes/command/children/preferences/settings-children.tsx +++ b/packages/spotlight/src/modes/command/children/preferences/settings-children.tsx @@ -8,7 +8,6 @@ import localeData from "dayjs/plugin/localeData"; import { clientApi } from "@homarr/api/client"; import { useSession } from "@homarr/auth/client"; import type { ColorScheme } from "@homarr/definitions"; -import type { UserPreferenceKey } from "@homarr/settings"; import { visiblePreferenceDefinitions } from "@homarr/settings"; import { localeConfigurations } from "@homarr/translation"; import { useScopedI18n } from "@homarr/translation/client"; @@ -24,8 +23,6 @@ dayjs.extend(localeData); type SettingsAction = ChildrenAction>; -const weekDays = dayjs.weekdays(false); - const BooleanRow = ({ label, Icon, @@ -87,7 +84,7 @@ const useSettingsActions = (_: Record, query: string): Settings defaultSearchEngineId: () => searchEnginesQuery.data?.find((e) => e.value === preferences.getPreference("defaultSearchEngineId").value) ?.label ?? t("searchEngine.none" as never), - firstDayOfWeek: () => weekDays[preferences.getPreference("firstDayOfWeek").value as DayOfWeek] ?? "", + firstDayOfWeek: () => dayjs.weekdays(false)[preferences.getPreference("firstDayOfWeek").value as DayOfWeek] ?? "", homeBoardId: () => boardsQuery.data?.find((b) => b.id === preferences.getPreference("homeBoardId").value)?.name ?? t("board.none" as never), diff --git a/packages/spotlight/src/preferences/preference-registry.tsx b/packages/spotlight/src/preferences/preference-registry.tsx index 947f1f4fe..0a7fbe9df 100644 --- a/packages/spotlight/src/preferences/preference-registry.tsx +++ b/packages/spotlight/src/preferences/preference-registry.tsx @@ -97,7 +97,6 @@ const createAsyncSelectableChildren = ( DetailComponent: () => , }); -const weekDays = dayjs.weekdays(false); const firstDayOfWeekOptions: DayOfWeek[] = [1, 6, 0]; export const preferenceChildrenOptionsByKey: Partial> = { @@ -116,7 +115,7 @@ export const preferenceChildrenOptionsByKey: Partial firstDayOfWeekOptions.map((day) => ({ key: day.toString(), - label: weekDays[day] ?? day.toString(), + label: dayjs.weekdays(false)[day] ?? day.toString(), value: day, })), ), diff --git a/packages/spotlight/src/preferences/use-user-preference.ts b/packages/spotlight/src/preferences/use-user-preference.ts index f2ea49d13..0bbd67a57 100644 --- a/packages/spotlight/src/preferences/use-user-preference.ts +++ b/packages/spotlight/src/preferences/use-user-preference.ts @@ -73,6 +73,13 @@ export const useUserPreferences = () => { const t = useI18n(); const userId = session?.user.id; const pendingRef = useRef>({}); + const prevUserIdRef = useRef(userId); + + useEffect(() => { + if (prevUserIdRef.current === userId) return; + prevUserIdRef.current = userId; + clearOptimistic(userPreferenceDefinitions.map((d) => d.key)); + }, [userId]); useSyncExternalStore( subscribeOptimistic, @@ -163,11 +170,12 @@ export const useUserPreferences = () => { return; } - setOptimistic(key, value); const group = userPreferenceDefinitionByKey[key].mutationGroup!; const dispatcher = groupDispatchers[group]; if (!dispatcher) return; + setOptimistic(key, value); + pendingRef.current[group] = true; try { await dispatcher(key, value);