Files
bsky-social-app/src/state/preferences/used-starter-packs.tsx
T
2024-06-16 22:27:53 -07:00

36 lines
1020 B
TypeScript

import React from 'react'
import * as persisted from '#/state/persisted'
type StateContext = string[] | undefined
type SetContext = (v: string) => void
const stateContext = React.createContext<StateContext>([])
const setContext = React.createContext<SetContext>((_: string) => {})
export function Provider({children}: {children: React.ReactNode}) {
const [state, setState] = React.useState<StateContext>()
const setStateWrapped = (v: StateContext) => {
persisted.write('usedStarterPacks', [...state, v])
setState(prev => [...prev, v])
}
React.useEffect(() => {
return persisted.onUpdate(() => {
setState(persisted.get('usedStarterPack'))
})
}, [])
return (
<stateContext.Provider value={state}>
<setContext.Provider value={setStateWrapped}>
{children}
</setContext.Provider>
</stateContext.Provider>
)
}
export const useUsedStarterPacks = () => React.useContext(stateContext)
export const useAddUsedStarterPack = () => React.useContext(setContext)