diff --git a/src/renderer/src/features/account/AccountSettingsView.tsx b/src/renderer/src/features/account/AccountSettingsView.tsx index 2259b4c..85ee2ab 100644 --- a/src/renderer/src/features/account/AccountSettingsView.tsx +++ b/src/renderer/src/features/account/AccountSettingsView.tsx @@ -1,7 +1,7 @@ -import { useState } from "react"; import { Trans } from "react-i18next"; import { useI18n } from "../../lib/i18n"; import { Banner, Loader, PAGE_TITLE, Tabs } from "../../components/ui"; +import { useViewState } from "../navigation/NavContext"; import { useAccountSettings } from "./useAccountSettings"; import { DisplayNameSection } from "./sections/DisplayNameSection"; import { EmailSection } from "./sections/EmailSection"; @@ -22,7 +22,7 @@ type AccountTab = "account" | "security" | "privacy" | "data"; export function AccountSettingsView() { const { t } = useI18n(); const { state, set } = useAccountSettings(); - const [tab, setTab] = useState("account"); + const [tab, setTab] = useViewState("account:tab", "account"); if (state.status === "loading") return ; if (state.status === "error") diff --git a/src/renderer/src/features/avatar/AvatarsView.tsx b/src/renderer/src/features/avatar/AvatarsView.tsx index 51cffce..eac1a06 100644 --- a/src/renderer/src/features/avatar/AvatarsView.tsx +++ b/src/renderer/src/features/avatar/AvatarsView.tsx @@ -21,6 +21,7 @@ import { type FavoriteFolder, } from "../../store/avatars"; import { useSelf, useSocial } from "../../store/social"; +import { useViewState } from "../navigation/NavContext"; import { AvatarCard } from "./AvatarCard"; import { FolderEditModal } from "./FolderEditModal"; @@ -41,8 +42,8 @@ function matchAvatar(query: string): AvatarFilter { export function AvatarsView() { const t = useT(); - const [tab, setTab] = useState("uploaded"); - const [query, setQuery] = useState(""); + const [tab, setTab] = useViewState("avatars:tab", "uploaded"); + const [query, setQuery] = useViewState("avatars:query", ""); const filter = useMemo(() => matchAvatar(query), [query]); const selfId = useSocial((s) => s.selfId); diff --git a/src/renderer/src/features/navigation/NavContext.tsx b/src/renderer/src/features/navigation/NavContext.tsx index 7533258..a3da536 100644 --- a/src/renderer/src/features/navigation/NavContext.tsx +++ b/src/renderer/src/features/navigation/NavContext.tsx @@ -1,4 +1,4 @@ -import { createContext, useContext, useMemo, useState } from "react"; +import { createContext, useCallback, useContext, useMemo, useRef, useState } from "react"; export type View = | { kind: "user"; id: "me" | string } @@ -30,12 +30,15 @@ interface Nav { openGallery: () => void; openSearch: () => void; back: () => void; + getViewState: (key: string) => unknown; + setViewState: (key: string, value: unknown) => void; } const NavCtx = createContext