@@ -5,7 +5,7 @@ import { useTranslations } from 'next-intl';
5
5
import dynamic from 'next/dynamic' ;
6
6
import Image from 'next/image' ;
7
7
import Link from 'next/link' ;
8
- import { useContext , useEffect , useState , useRef } from 'react' ;
8
+ import { useContext , useEffect , useState , useRef , ChangeEvent } from 'react' ;
9
9
10
10
import { Button } from '@/components/shared/Forms/Buttons/Buttons' ;
11
11
import SearchBar from '@/components/shared/SearchBar/SearchBar' ;
@@ -34,21 +34,22 @@ export default function Page({ params }: { params: { locale: string } }) {
34
34
const [ dbUserSettings , setDbUserSettings ] = useState < IUserSettings | null > ( null ) ;
35
35
const [ zoomLevel , setZoomLevel ] = useState ( 2 ) ;
36
36
const [ locationError , setLocationError ] = useState < string | null > ( null ) ;
37
+ const [ searchBarValue , setSearchBarValue ] = useState ( '' ) ;
37
38
const [ searchQuery , setSearchQuery ] = useState < string > ( '' ) ;
38
39
const [ isSearchClicked , setSearchClicked ] = useState ( false ) ;
39
40
const [ searchResults , setSearchResults ] = useState < any [ ] > ( [ ] ) ;
40
- const [ showPopup , setShowPopup ] = useState < boolean > ( false )
41
+ const [ showPopup , setShowPopup ] = useState < boolean > ( false ) ;
41
42
42
43
const { isSigningInUser, currentUser, autoLoginUser, reload, setReload } = useContext ( AppContext ) ;
43
44
44
45
useEffect ( ( ) => {
45
46
// clear previous map state when findme option is changed
46
- if ( reload ) {
47
+ if ( reload ) {
47
48
sessionStorage . removeItem ( 'prevMapCenter' ) ;
48
49
sessionStorage . removeItem ( 'prevMapZoom' ) ;
49
50
}
50
- setReload ( false )
51
- setShowPopup ( false )
51
+ setReload ( false ) ;
52
+ setShowPopup ( false ) ;
52
53
checkAndAutoLoginUser ( currentUser , autoLoginUser ) ;
53
54
54
55
const getUserSettingsData = async ( ) => {
@@ -61,7 +62,7 @@ export default function Page({ params }: { params: { locale: string } }) {
61
62
const coordinates = {
62
63
lat : data . search_map_center . coordinates [ 1 ] ,
63
64
lng : data . search_map_center . coordinates [ 0 ] ,
64
- }
65
+ } ;
65
66
setSearchCenter ( coordinates ) ;
66
67
if ( coordinates . lat === 0 && coordinates . lng === 0 ) {
67
68
setShowPopup ( true ) ;
@@ -70,14 +71,14 @@ export default function Page({ params }: { params: { locale: string } }) {
70
71
} else {
71
72
logger . warn ( 'User Settings not found.' ) ;
72
73
setDbUserSettings ( null ) ;
73
- setSearchCenter ( null )
74
+ setSearchCenter ( null ) ;
74
75
}
75
76
} catch ( error ) {
76
77
logger . error ( 'Error fetching user settings data:' , error ) ;
77
78
}
78
79
} ;
79
80
80
- getUserSettingsData ( ) ;
81
+ getUserSettingsData ( ) ;
81
82
} , [ currentUser , reload ] ) ;
82
83
83
84
useEffect ( ( ) => {
@@ -86,9 +87,8 @@ export default function Page({ params }: { params: { locale: string } }) {
86
87
const loc = await userLocation ( dbUserSettings ) ;
87
88
if ( loc ) {
88
89
setSearchCenter ( { lat : loc [ 0 ] , lng : loc [ 1 ] } ) ;
89
- }
90
- else {
91
- setSearchCenter ( null )
90
+ } else {
91
+ setSearchCenter ( null ) ;
92
92
}
93
93
}
94
94
} ;
@@ -104,28 +104,29 @@ export default function Page({ params }: { params: { locale: string } }) {
104
104
if ( loc ) {
105
105
setSearchCenter ( { lat : loc [ 0 ] , lng : loc [ 1 ] } ) ;
106
106
logger . info ( 'User location obtained successfully on button click:' , { location } ) ;
107
- }
108
- else {
109
- setSearchCenter ( null )
107
+ } else {
108
+ setSearchCenter ( null ) ;
110
109
}
111
110
}
112
111
} ;
113
112
114
113
// Handle search query update from SearchBar and associated results
115
114
const handleSearch = async ( query : string ) => {
116
- setSearchQuery ( query ) ;
117
- setSearchClicked ( true ) ;
115
+ if ( query ) {
116
+ setSearchQuery ( query ) ;
117
+ setSearchClicked ( true ) ;
118
118
119
- // Fetch sellers based on current map bounds and search query
120
- try {
121
- const mapInstance = mapRef . current ;
122
- if ( mapInstance ) {
123
- const bounds = mapInstance . getBounds ( ) ;
124
- const results = await fetchSellers ( bounds , query ) ; // Use API to fetch sellers
125
- setSearchResults ( results || [ ] ) ; // Update searchResults
119
+ // Fetch sellers based on current map bounds and search query
120
+ try {
121
+ const mapInstance = mapRef . current ;
122
+ if ( mapInstance ) {
123
+ const bounds = mapInstance . getBounds ( ) ;
124
+ const results = await fetchSellers ( bounds , query ) ; // Use API to fetch sellers
125
+ setSearchResults ( results || [ ] ) ; // Update searchResults
126
+ }
127
+ } catch ( error ) {
128
+ logger . error ( 'Failed to fetch sellers for search query.' , error ) ;
126
129
}
127
- } catch ( error ) {
128
- logger . error ( 'Failed to fetch sellers for search query.' , error ) ;
129
130
}
130
131
} ;
131
132
@@ -139,7 +140,14 @@ export default function Page({ params }: { params: { locale: string } }) {
139
140
isSearchClicked = { isSearchClicked }
140
141
searchResults = { searchResults || [ ] }
141
142
/>
142
- < SearchBar page = { 'default' } onSearch = { handleSearch } />
143
+ < SearchBar
144
+ page = { 'default' }
145
+ onSearch = { handleSearch }
146
+ setSearchResults = { setSearchResults }
147
+ setSearchQuery = { setSearchQuery }
148
+ setSearchClicked = { setSearchClicked }
149
+ isSearchClicked = { isSearchClicked }
150
+ />
143
151
< div className = "absolute bottom-8 z-10 right-0 left-0 m-auto pointer-events-none" >
144
152
< div className = "w-[90%] lg:w-full lg:px-6 mx-auto flex items-center justify-between" >
145
153
{ /* Add Seller Button */ }
@@ -181,12 +189,14 @@ export default function Page({ params }: { params: { locale: string } }) {
181
189
/>
182
190
</ div >
183
191
</ div >
184
- { showPopup && < ConfirmDialog
185
- show = { setShowPopup }
186
- onClose = { ( ) => setShowPopup ( false ) }
187
- message = { t ( 'HOME.SEARCH_CENTER_DEFAULT_MESSAGE' ) }
188
- url = { `/map-center?entryType=search` }
189
- /> }
192
+ { showPopup && (
193
+ < ConfirmDialog
194
+ show = { setShowPopup }
195
+ onClose = { ( ) => setShowPopup ( false ) }
196
+ message = { t ( 'HOME.SEARCH_CENTER_DEFAULT_MESSAGE' ) }
197
+ url = { `/map-center?entryType=search` }
198
+ />
199
+ ) }
190
200
</ div >
191
201
</ >
192
202
) ;
0 commit comments