@@ -188,7 +188,6 @@ let make = (
188188) => {
189189 let allItems = mdxSources -> Array .map (mdxSource => {
190190 let {id , keywords , category , summary , name , status , href } = mdxSource
191-
192191 {
193192 Item .id ,
194193 keywords ,
@@ -213,7 +212,6 @@ let make = (
213212
214213 let fuse : Fuse .t <Item .t > = Fuse .make (allItems , fuseOpts )
215214
216- let location = ReactRouter .useLocation ()
217215 let (state , setState ) = React .useState (_ => {
218216 switch activeItem {
219217 | Some (item ) => ShowDetails ((item :> Item .t ))
@@ -238,6 +236,8 @@ let make = (
238236
239237 let navigate = ReactRouter .useNavigate ()
240238
239+ let {pathname } = ReactRouter .useLocation ()
240+
241241 // onSearchValueChange() is called when:
242242 // [A] The search value changes.
243243 // [B] The search is cleared.
@@ -248,7 +248,6 @@ let make = (
248248 // [2] Search exactly matches an item - trigger a route change, and allow the EFFECT to update the view state.
249249 // [3] Search does not match an item - immediately update the view state to show filtered items.
250250 let onSearchValueChange = value => {
251- Console .log2 ("value changed" , value )
252251 switch value {
253252 | "" =>
254253 setState (_ => ShowAll )
@@ -259,7 +258,14 @@ let make = (
259258 let filtered = searchItems (value )
260259 setState (_ => ShowFiltered (value , filtered ))
261260 }
262- | Some (item ) => navigate ("/syntax-lookup/" ++ item .id )
261+ | Some (item ) => {
262+ let target = "/syntax-lookup/" ++ item .href
263+
264+ // This makes sure we don't double navigate
265+ if (pathname :> string ) != target {
266+ navigate (target )
267+ }
268+ }
263269 }
264270 }
265271 }
0 commit comments