@@ -3,7 +3,7 @@ import {InfiniteData, QueryClient, useInfiniteQuery, useQueryClient} from "@tans
33import { PageSearchResult , SearchControllerApiFactory , SearchQuery } from "../api" ;
44import MainContainer from "../components/MainContainer" ;
55import Loading from "../components/Loading" ;
6- import React , { useEffect , useState } from "react" ;
6+ import React , { useEffect } from "react" ;
77import MagazineItem from "../components/MagazineItem" ;
88import { Button } from "@mui/material" ;
99import { useInView } from "react-intersection-observer" ;
@@ -12,25 +12,23 @@ import PageDetailModal from "../components/PageDetailModal";
1212import { PageQueryKey } from "../domain/pageQueryKey" ;
1313import { PageOperateEvent , PageOperation } from "../components/PageOperationButtons" ;
1414import { useSnackbar } from "notistack" ;
15+ import { safeInt } from "../common/typeUtils" ;
1516
1617// type SearchQuery = {
1718// page?: number, q?: string, queryOptions?: string, size?: number
1819// }
1920
2021export default function Search ( ) {
2122 setDocTitle ( "Search results" ) ;
22-
23+
2324 const { ref : inViewRef , inView} = useInView ( ) ;
2425 const { enqueueSnackbar} = useSnackbar ( ) ;
2526 const [ searchParams , setSearchParams ] = useSearchParams ( ) ;
2627 const q = searchParams . get ( 'q' ) ;
2728 const options = searchParams . get ( "op" ) ;
28- setDocTitle ( q + " - search results" ) ;
29+ const selectedPageId = safeInt ( searchParams . get ( "p" ) ) ;
2930
30- const [ selectedPageId , setSelectedPageId ] = useState ( 0 ) ;
31- useEffect ( ( ) => {
32- setSelectedPageId ( 0 ) ;
33- } , [ q , options ] ) ;
31+ setDocTitle ( q + " - search results" ) ;
3432
3533 const query : SearchQuery = { q, size : 10 , queryOptions : options } ;
3634 const queryKey = [ PageQueryKey . Search , query ] ;
@@ -71,7 +69,11 @@ export default function Search() {
7169 return ;
7270 }
7371 e . preventDefault ( ) ;
74- setSelectedPageId ( pageId ) ;
72+ setSearchParams ( { q : q , op : options , p : pageId } , { preventScrollReset : true } ) ;
73+ }
74+
75+ function closePageDetail ( ) {
76+ setSearchParams ( { q : q , op : options } , { preventScrollReset : true } ) ;
7577 }
7678
7779 function operateSuccess ( event : PageOperateEvent ) {
@@ -113,10 +115,6 @@ export default function Search() {
113115 }
114116 }
115117
116- function closePageDetail ( ) {
117- setSelectedPageId ( 0 ) ;
118- }
119-
120118 return < MainContainer >
121119 < PageDetailModal selectedPageId = { selectedPageId } operateSuccess = { operateSuccess } onClose = { closePageDetail } />
122120 < div className = "p-2" >
0 commit comments