@@ -129,9 +129,8 @@ export default function DocSearchTemplate({
129
129
const [ docQuery , setDocQuery ] = React . useState ( "" ) ;
130
130
const [ isLoading , setIsLoading ] = React . useState ( false ) ;
131
131
const [ results , setResults ] = React . useState < any [ ] > ( [ ] ) ;
132
- const [ searched , setSearched ] = React . useState ( false ) ;
133
132
134
- const { language } = useI18next ( ) ;
133
+ const { language, navigate } = useI18next ( ) ;
135
134
const location = useLocation ( ) ;
136
135
137
136
React . useEffect ( ( ) => {
@@ -142,50 +141,63 @@ export default function DocSearchTemplate({
142
141
setDocType ( type ) ;
143
142
setDocVersion ( version ) ;
144
143
setDocQuery ( query ) ;
145
- } , [ location . search ] ) ;
146
144
147
- React . useEffect ( ( ) => {
148
- if ( docType && docQuery ) {
149
- execSearch ( ) ;
150
- }
151
- } , [ docType , docQuery , docVersion ] ) ;
145
+ execSearch ( query , type , version ) ;
146
+ } , [ ] ) ;
152
147
153
148
const realVersionMemo = React . useMemo ( ( ) => {
154
149
return getSearchIndexVersion ( docType , docVersion , language ) ;
155
150
} , [ docType , docVersion ] ) ;
156
- const tidbSearchIndciesMemo = React . useMemo ( ( ) => {
157
- return fetchTidbSearchIndcies ( language ) ;
158
- } , [ ] ) ;
159
151
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 ) ;
163
158
const index = algoliaClient . initIndex (
164
- `${ language } -${ docType } ${ realVersionMemo ? `-${ realVersionMemo } ` : "" } `
159
+ `${ language } -${ type } ${ realVersion ? `-${ realVersion } ` : "" } `
165
160
) ;
166
161
setIsLoading ( true ) ;
167
162
168
163
index
169
- . search ( docQuery , {
164
+ . search ( search , {
170
165
hitsPerPage : 150 ,
171
166
} )
172
167
. then ( ( { hits } ) => {
173
168
setResults ( hits ) ;
174
- setSearched ( true ) ;
175
169
setIsLoading ( false ) ;
176
170
} )
177
171
. catch ( ( reason : any ) => {
178
172
console . error ( reason ) ;
179
173
setResults ( [ ] ) ;
180
- setSearched ( true ) ;
181
174
setIsLoading ( false ) ;
182
175
} ) ;
183
176
} ;
184
177
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 ) ;
189
201
} ;
190
202
191
203
const bannerVisible = feature ?. banner && language !== Locale . ja ;
@@ -214,6 +226,7 @@ export default function DocSearchTemplate({
214
226
type : docType ,
215
227
version : realVersionMemo || "stable" ,
216
228
} }
229
+ onSubmit = { ( query ) => execSearch ( query , docType , docVersion ) }
217
230
/>
218
231
< Box
219
232
sx = { {
@@ -286,7 +299,7 @@ export default function DocSearchTemplate({
286
299
size = "small"
287
300
variant = "text"
288
301
onClick = { ( ) => {
289
- setDocVersion ( version ) ;
302
+ handleSelectDocVersion ( version ) ;
290
303
} }
291
304
sx = { ( theme ) => ( {
292
305
backgroundColor :
0 commit comments