/
Korablik
/
Developer
Обзор
Документация
Войти
/
Korablik
/
Developer
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/context/BookmarksContextProvider.tsx
45 строк
1 KB
Korablevsky
fixFinal
26 мар 2024, 20:29
26 мар 2024, 20:29
ef55868
Код
Авторство
О чём код?
import { createContext } from 'react' import { useJobItems, useLocalStorage } from '../lib/hooks' import { JobItemExpanded } from '../lib/types' export type BookmarksContext = { bookmarkedIds: number[] handleToggleBookmark: (id: number) => void bookmarkedJobItems: JobItemExpanded[] isLoading: boolean } export const BookmarksContext = createContext<BookmarksContext | null>(null) export default function BookmarksContextProvider({ children, }: { children: React.ReactNode }) { const [bookmarkedIds, setBookmarkedIds] = useLocalStorage<number[]>( 'bookmarkedIds', [] ) const { jobItems: bookmarkedJobItems, isLoading } = useJobItems(bookmarkedIds) const handleToggleBookmark = (id: number) => { if (bookmarkedIds.includes(id)) { setBookmarkedIds(prev => prev.filter(jobId => jobId !== id)) } else { setBookmarkedIds(prev => [...prev, id]) } } return ( <BookmarksContext.Provider value={{ bookmarkedIds, handleToggleBookmark, bookmarkedJobItems, isLoading, }} > {children} </BookmarksContext.Provider> ) }