Skip to content

Commit ee30d6f

Browse files
committed
feat: Simplify state management in Search component by removing unused state and optimizing search parameter handling
1 parent 7be0b2e commit ee30d6f

1 file changed

Lines changed: 10 additions & 12 deletions

File tree

app/client/src/pages/Search.tsx

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {InfiniteData, QueryClient, useInfiniteQuery, useQueryClient} from "@tans
33
import {PageSearchResult, SearchControllerApiFactory, SearchQuery} from "../api";
44
import MainContainer from "../components/MainContainer";
55
import Loading from "../components/Loading";
6-
import React, {useEffect, useState} from "react";
6+
import React, {useEffect} from "react";
77
import MagazineItem from "../components/MagazineItem";
88
import {Button} from "@mui/material";
99
import {useInView} from "react-intersection-observer";
@@ -12,25 +12,23 @@ import PageDetailModal from "../components/PageDetailModal";
1212
import {PageQueryKey} from "../domain/pageQueryKey";
1313
import {PageOperateEvent, PageOperation} from "../components/PageOperationButtons";
1414
import {useSnackbar} from "notistack";
15+
import {safeInt} from "../common/typeUtils";
1516

1617
// type SearchQuery = {
1718
// page?: number, q?: string, queryOptions?: string, size?: number
1819
// }
1920

2021
export 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

Comments
 (0)