99
1010import { useHeritageSearchQuery } from "../../search/hooks/use-search-heritage-query" ;
1111import SearchResultsPage from "../components/SearchResultsPage" ;
12+ import type { WorldHeritageVm } from "../../../../domain/types" ;
1213import { toWorldHeritageListVm } from "@features/heritages/mappers/to-world-heritage-vm" ;
1314import type { Pagination } from "../types" ;
1415import { HeritageSubHeader } from "@features/top/components/HeritageSubHeader" ;
@@ -160,34 +161,36 @@ export function SearchHeritageResultsContainer(): React.ReactElement {
160161 [ draft , navigate , setDraft ] ,
161162 ) ;
162163
164+ // Hooks must be called at the top level before any early returns.
165+ const handleBackToAllSites = React . useCallback ( ( ) => {
166+ navigate ( "/heritages" , { replace : true } ) ;
167+ } , [ navigate ] ) ;
168+
163169 const header = (
164170 < HeritageSubHeader value = { draft } onChange = { handleChange } onSubmit = { handleSubmit } />
165171 ) ;
166172
173+ const baseProps = {
174+ header,
175+ onBackToAllSites : handleBackToAllSites ,
176+ items : [ ] as WorldHeritageVm [ ] ,
177+ pagination : null ,
178+ } ;
179+
167180 if ( isLoading ) {
168- return < SearchResultsPage header = { header } items = { [ ] } pagination = { null } rangeText = "Loading…" /> ;
181+ return < SearchResultsPage { ... baseProps } pagination = { null } rangeText = "Loading…" /> ;
169182 }
170183
171184 if ( error ) {
172185 const message = error instanceof Error ? error . message : "Failed" ;
173186
174- return (
175- < SearchResultsPage
176- header = { header }
177- items = { [ ] }
178- pagination = { null }
179- rangeText = "Failed to load."
180- errorMessage = { message }
181- />
182- ) ;
187+ return < SearchResultsPage { ...baseProps } rangeText = "Failed to load." errorMessage = { message } /> ;
183188 }
184189
185190 if ( ! data || ! isValidListResult ( data ) ) {
186191 return (
187192 < SearchResultsPage
188- header = { header }
189- items = { [ ] }
190- pagination = { null }
193+ { ...baseProps }
191194 rangeText = "Unexpected response."
192195 errorMessage = { ! data ? undefined : "Invalid data structure: items or pagination missing." }
193196 />
@@ -206,6 +209,7 @@ export function SearchHeritageResultsContainer(): React.ReactElement {
206209 rangeText = { rangeText }
207210 onClickItem = { handleClickItem }
208211 onPageChange = { handlePageChange }
212+ onBackToAllSites = { handleBackToAllSites }
209213 />
210214 ) ;
211215}
0 commit comments