import { createContext, Dispatch, SetStateAction, useState } from 'react'; import { INotebookMetadata } from './notebook-metadata'; import { SORT_OPTIONS, SortValues } from './notebooks.service'; interface INotebooksSelector { selectedTags: INotebookMetadata['tags']; setSelectedTags: Dispatch>; searchValue: string; setSearchValue: Dispatch>; resetFilters: () => void; sort: SortValues; setSort: Dispatch>; page: number; setPage: Dispatch>; } const defaultSelectedTags: INotebookMetadata['tags'] = { categories: [], tasks: [], libraries: [], other: [], }; export const NotebooksContext = createContext({ selectedTags: defaultSelectedTags, setSelectedTags: () => {}, searchValue: '', setSearchValue: () => {}, resetFilters: () => {}, sort: SORT_OPTIONS.RECENTLY_ADDED, setSort: () => {}, page: 1, setPage: () => {}, }); export function useNotebooksSelector(): INotebooksSelector { const [selectedTags, setSelectedTags] = useState(defaultSelectedTags); const [searchValue, setSearchValue] = useState(''); const [sort, setSort] = useState(SORT_OPTIONS.RECENTLY_ADDED); const [page, setPage] = useState(1); const resetFilters = () => { setSelectedTags(defaultSelectedTags); setSearchValue(''); }; return { selectedTags, setSelectedTags, searchValue, setSearchValue, resetFilters, sort, setSort, page, setPage, }; }