feat: kind filter

This commit is contained in:
codytseng 2025-08-23 22:23:35 +08:00
parent f3f72e2f28
commit 4b9ead8319
13 changed files with 607 additions and 72 deletions

View file

@ -0,0 +1,32 @@
import { createContext, useContext, useState } from 'react'
import storage from '@/services/local-storage.service'
type TKindFilterContext = {
showKinds: number[]
updateShowKinds: (kinds: number[]) => void
}
const KindFilterContext = createContext<TKindFilterContext | undefined>(undefined)
export const useKindFilter = () => {
const context = useContext(KindFilterContext)
if (!context) {
throw new Error('useKindFilter must be used within a KindFilterProvider')
}
return context
}
export function KindFilterProvider({ children }: { children: React.ReactNode }) {
const [showKinds, setShowKinds] = useState<number[]>(storage.getShowKinds())
const updateShowKinds = (kinds: number[]) => {
storage.setShowKinds(kinds)
setShowKinds(kinds)
}
return (
<KindFilterContext.Provider value={{ showKinds, updateShowKinds }}>
{children}
</KindFilterContext.Provider>
)
}