Spaces:
Runtime error
Runtime error
File size: 1,709 Bytes
db5855f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
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<SetStateAction<INotebooksSelector['selectedTags']>>;
searchValue: string;
setSearchValue: Dispatch<SetStateAction<INotebooksSelector['searchValue']>>;
resetFilters: () => void;
sort: SortValues;
setSort: Dispatch<SetStateAction<INotebooksSelector['sort']>>;
page: number;
setPage: Dispatch<SetStateAction<INotebooksSelector['page']>>;
}
const defaultSelectedTags: INotebookMetadata['tags'] = {
categories: [],
tasks: [],
libraries: [],
other: [],
};
export const NotebooksContext = createContext<INotebooksSelector>({
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<SortValues>(SORT_OPTIONS.RECENTLY_ADDED);
const [page, setPage] = useState<number>(1);
const resetFilters = () => {
setSelectedTags(defaultSelectedTags);
setSearchValue('');
};
return {
selectedTags,
setSelectedTags,
searchValue,
setSearchValue,
resetFilters,
sort,
setSort,
page,
setPage,
};
}
|