@@ -129,9 +129,8 @@ export default function DocSearchTemplate({
129129 const [ docQuery , setDocQuery ] = React . useState ( "" ) ;
130130 const [ isLoading , setIsLoading ] = React . useState ( false ) ;
131131 const [ results , setResults ] = React . useState < any [ ] > ( [ ] ) ;
132- const [ searched , setSearched ] = React . useState ( false ) ;
133132
134- const { language } = useI18next ( ) ;
133+ const { language, navigate } = useI18next ( ) ;
135134 const location = useLocation ( ) ;
136135
137136 React . useEffect ( ( ) => {
@@ -142,50 +141,63 @@ export default function DocSearchTemplate({
142141 setDocType ( type ) ;
143142 setDocVersion ( version ) ;
144143 setDocQuery ( query ) ;
145- } , [ location . search ] ) ;
146144
147- React . useEffect ( ( ) => {
148- if ( docType && docQuery ) {
149- execSearch ( ) ;
150- }
151- } , [ docType , docQuery , docVersion ] ) ;
145+ execSearch ( query , type , version ) ;
146+ } , [ ] ) ;
152147
153148 const realVersionMemo = React . useMemo ( ( ) => {
154149 return getSearchIndexVersion ( docType , docVersion , language ) ;
155150 } , [ docType , docVersion ] ) ;
156- const tidbSearchIndciesMemo = React . useMemo ( ( ) => {
157- return fetchTidbSearchIndcies ( language ) ;
158- } , [ ] ) ;
159151
160- const execSearch = ( ) => {
161- // const realVersion = convertStableToRealVersion(docType, docVersion);
162- // const realVersion = getSearchIndexVersion(docType, docVersion);
152+ const execSearch = ( search : string , type : string , version : string ) => {
153+ if ( ! search || ! type ) {
154+ return ;
155+ }
156+
157+ const realVersion = getSearchIndexVersion ( type , version , language ) ;
163158 const index = algoliaClient . initIndex (
164- `${ language } -${ docType } ${ realVersionMemo ? `-${ realVersionMemo } ` : "" } `
159+ `${ language } -${ type } ${ realVersion ? `-${ realVersion } ` : "" } `
165160 ) ;
166161 setIsLoading ( true ) ;
167162
168163 index
169- . search ( docQuery , {
164+ . search ( search , {
170165 hitsPerPage : 150 ,
171166 } )
172167 . then ( ( { hits } ) => {
173168 setResults ( hits ) ;
174- setSearched ( true ) ;
175169 setIsLoading ( false ) ;
176170 } )
177171 . catch ( ( reason : any ) => {
178172 console . error ( reason ) ;
179173 setResults ( [ ] ) ;
180- setSearched ( true ) ;
181174 setIsLoading ( false ) ;
182175 } ) ;
183176 } ;
184177
185- const handleSelectDocType = (
186- selected : typeof EN_DOC_TYPE_LIST [ number ] [ "match" ]
187- ) => {
188- setDocType ( selected ) ;
178+ const handleSelectDocType = ( type : string ) => {
179+ setDocType ( type ) ;
180+ setDocVersion ( "" ) ;
181+ navigate ( `/search?type=${ type } &q=${ docQuery } ` , {
182+ state : {
183+ type,
184+ version : "" ,
185+ query : docQuery ,
186+ } ,
187+ } ) ;
188+ execSearch ( docQuery , type , "" ) ;
189+ } ;
190+
191+ const handleSelectDocVersion = ( version : string ) => {
192+ setDocVersion ( version ) ;
193+ navigate ( `/search?type=${ docType } &version=${ version } &q=${ docQuery } ` , {
194+ state : {
195+ type : docType ,
196+ version,
197+ query : docQuery ,
198+ } ,
199+ } ) ;
200+ execSearch ( docQuery , docType , version ) ;
189201 } ;
190202
191203 const bannerVisible = feature ?. banner && language !== Locale . ja ;
@@ -214,6 +226,7 @@ export default function DocSearchTemplate({
214226 type : docType ,
215227 version : realVersionMemo || "stable" ,
216228 } }
229+ onSubmit = { ( query ) => execSearch ( query , docType , docVersion ) }
217230 />
218231 < Box
219232 sx = { {
@@ -286,7 +299,7 @@ export default function DocSearchTemplate({
286299 size = "small"
287300 variant = "text"
288301 onClick = { ( ) => {
289- setDocVersion ( version ) ;
302+ handleSelectDocVersion ( version ) ;
290303 } }
291304 sx = { ( theme ) => ( {
292305 backgroundColor :
0 commit comments