1
- import { useCallback , useContext , useEffect , useMemo , useState } from 'react' ;
1
+ import { useCallback , useContext , useMemo , useState } from 'react' ;
2
2
import { useNavigate , useSearchParams } from 'react-router-dom' ;
3
3
import { RotateCw , LogOutIcon } from 'lucide-react' ;
4
4
import qs from 'qs' ;
@@ -21,16 +21,18 @@ const initialFilterData: IFilterFormProps = {
21
21
22
22
const Home = ( ) => {
23
23
const { data : shelters , loading, refresh } = useShelters ( ) ;
24
- const [ searchParams , setSearchParams ] = useSearchParams ( ) ;
25
24
const {
26
25
loading : loadingSession ,
27
26
refreshSession,
28
27
session,
29
28
} = useContext ( SessionContext ) ;
30
- const [ searchValue , setSearchValue ] = useState < string > ( '' ) ;
31
29
const [ isModalOpen , setOpenModal ] = useState < boolean > ( false ) ;
32
- const [ filterData , setFilterData ] =
33
- useState < IFilterFormProps > ( initialFilterData ) ;
30
+ const [ , setSearchParams ] = useSearchParams ( ) ;
31
+ const [ filterData , setFilterData ] = useState < IFilterFormProps > ( {
32
+ ...initialFilterData ,
33
+ ...qs . parse ( new URLSearchParams ( window . location . search ) . toString ( ) ) ,
34
+ } ) ;
35
+
34
36
const [ , setSearch ] = useThrottle < string > (
35
37
{
36
38
throttle : 400 ,
@@ -48,7 +50,6 @@ const Home = () => {
48
50
const navigate = useNavigate ( ) ;
49
51
50
52
const clearSearch = useCallback ( ( ) => {
51
- setSearchValue ( '' ) ;
52
53
setSearch ( '' ) ;
53
54
setFilterData ( initialFilterData ) ;
54
55
setSearchParams ( '' ) ;
@@ -63,7 +64,6 @@ const Home = () => {
63
64
( values : IFilterFormProps ) => {
64
65
setOpenModal ( false ) ;
65
66
setFilterData ( values ) ;
66
- console . log ( values ) ;
67
67
const searchQuery = qs . stringify ( values , {
68
68
skipNulls : true ,
69
69
} ) ;
@@ -82,7 +82,7 @@ const Home = () => {
82
82
...shelters . filters ,
83
83
page : shelters . page + 1 ,
84
84
perPage : shelters . perPage ,
85
- search : searchValue ? searchValue : '' ,
85
+ search : qs . stringify ( filterData ) ,
86
86
} ;
87
87
88
88
refresh (
@@ -91,11 +91,7 @@ const Home = () => {
91
91
} ,
92
92
true
93
93
) ;
94
- } , [ refresh , searchValue , shelters . filters , shelters . page , shelters . perPage ] ) ;
95
-
96
- useEffect ( ( ) => {
97
- console . log ( searchParams . toString ( ) ) ;
98
- } , [ searchParams ] ) ;
94
+ } , [ refresh , filterData , shelters . filters , shelters . page , shelters . perPage ] ) ;
99
95
100
96
return (
101
97
< div className = "flex flex-col h-screen items-center" >
@@ -147,9 +143,9 @@ const Home = () => {
147
143
count = { shelters . count }
148
144
data = { shelters . results }
149
145
onFetchMoreData = { handleFetchMore }
150
- searchValue = { searchValue }
146
+ searchValue = { filterData . search }
151
147
onSearchValueChange = { ( v ) => {
152
- setSearchValue ( v ) ;
148
+ setFilterData ( ( prev ) => ( { ... prev , search : v } ) ) ;
153
149
setSearch ( v ) ;
154
150
} }
155
151
onSelectShelter = { ( s ) => navigate ( `/abrigo/${ s . id } ` ) }
0 commit comments