diff --git a/src/state/persisted/schema.ts b/src/state/persisted/schema.ts index b81cf5962d..dc17d97c59 100644 --- a/src/state/persisted/schema.ts +++ b/src/state/persisted/schema.ts @@ -88,6 +88,7 @@ export const schema = z.object({ disableHaptics: z.boolean().optional(), disableAutoplay: z.boolean().optional(), kawaii: z.boolean().optional(), + starterPackId: z.string().optional(), }) export type Schema = z.infer @@ -126,4 +127,5 @@ export const defaults: Schema = { disableHaptics: false, disableAutoplay: prefersReducedMotion, kawaii: false, + starterPackId: undefined, } diff --git a/src/state/preferences/index.tsx b/src/state/preferences/index.tsx index 70c8efc805..bbb15675e4 100644 --- a/src/state/preferences/index.tsx +++ b/src/state/preferences/index.tsx @@ -8,6 +8,7 @@ import {Provider as HiddenPostsProvider} from './hidden-posts' import {Provider as InAppBrowserProvider} from './in-app-browser' import {Provider as KawaiiProvider} from './kawaii' import {Provider as LanguagesProvider} from './languages' +import {Provider as StarterPackProvider} from './starter-pack' export { useRequireAltTextEnabled, @@ -32,7 +33,9 @@ export function Provider({children}: React.PropsWithChildren<{}>) { - {children} + + {children} + diff --git a/src/state/preferences/starter-pack.tsx b/src/state/preferences/starter-pack.tsx new file mode 100644 index 0000000000..b5e54e44d1 --- /dev/null +++ b/src/state/preferences/starter-pack.tsx @@ -0,0 +1,35 @@ +import React from 'react' + +import * as persisted from '#/state/persisted' + +type StateContext = string | undefined +type SetContext = (v: string) => void + +const stateContext = React.createContext(undefined) +const setContext = React.createContext((_: string) => {}) + +export function Provider({children}: {children: React.ReactNode}) { + const [state, setState] = React.useState() + + const setStateWrapped = (v: string) => { + setState(v) + persisted.write('starterPackId', v) + } + + React.useEffect(() => { + return persisted.onUpdate(() => { + setState(persisted.get('starterPackId')) + }) + }, []) + + return ( + + + {children} + + + ) +} + +export const useStarterPack = () => React.useContext(stateContext) +export const useSetStarterPack = () => React.useContext(setContext)