File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import { useState , useCallback , useMemo } from 'react'
2+ import { UseSearchAndPagination } from './types'
3+
4+ const useSearchAndPaginationInMemory = ( ) : UseSearchAndPagination => {
5+ const initialState = useMemo (
6+ ( ) => ( {
7+ page : 0 ,
8+ size : 15 ,
9+ searchQuery : '' ,
10+ } ) ,
11+ [ ]
12+ )
13+
14+ const [ state , setState ] = useState ( initialState )
15+
16+ const search = useCallback ( ( query : string ) => {
17+ setState ( ( currentState ) => {
18+ return {
19+ ...currentState ,
20+ page : 0 ,
21+ searchQuery : query ,
22+ }
23+ } )
24+ } , [ ] )
25+
26+ const clear = useCallback ( ( ) => {
27+ setState ( ( ) => {
28+ return initialState
29+ } )
30+ } , [ initialState ] )
31+
32+ const setPage = useCallback ( ( page : number ) => {
33+ setState ( ( currentState ) => {
34+ return {
35+ ...currentState ,
36+ page,
37+ }
38+ } )
39+ } , [ ] )
40+
41+ return {
42+ search : state . searchQuery ,
43+ searchActions : {
44+ search,
45+ clear,
46+ } ,
47+ page : state . page ,
48+ size : state . size ,
49+ paginationActions : { setPage } ,
50+ }
51+ }
52+
53+ export { useSearchAndPaginationInMemory }
Original file line number Diff line number Diff line change 1+ export * from './inMemoryPagination'
Original file line number Diff line number Diff line change 1+ export type UseSearchQuery = {
2+ search : string
3+ searchActions : { search : ( query : string ) => void ; clear : ( ) => void }
4+ }
5+
6+ export type UsePagination = {
7+ page : number
8+ size : number
9+ } & PaginationActions
10+
11+ export type PaginationActions = {
12+ paginationActions : { setPage : ( page : number ) => void }
13+ }
14+
15+ export type UseSearchAndPagination = UseSearchQuery & UsePagination
You can’t perform that action at this time.
0 commit comments