@@ -28,39 +28,23 @@ const searchQuery = shallowRef(normalizeSearchParam(route.query.q))
2828// Pages that have their own local filter using ?q
2929const pagesWithLocalFilter = new Set ([' ~username' , ' org' ])
3030
31- // Debounced URL update for search query
3231const updateUrlQuery = debounce ((value : string ) => {
33- // Don't navigate away from pages that use ?q for local filtering
34- if (pagesWithLocalFilter .has (route .name as string )) {
35- return
36- }
3732 if (route .name === ' search' ) {
3833 router .replace ({ query: { q: value || undefined } })
39- return
40- }
41- if (! value ) {
42- return
4334 }
44-
45- router .push ({
46- name: ' search' ,
47- query: {
48- q: value ,
49- },
50- })
5135}, 250 )
5236
53- // Watch input and debounce URL updates
54- watch (searchQuery , value => {
55- updateUrlQuery (value )
37+ watch (searchQuery , (value ) => {
38+ if (route .name === ' search' ) {
39+ updateUrlQuery (value )
40+ }
5641})
5742
5843// Sync input with URL when navigating (e.g., back button)
5944watch (
6045 () => route .query .q ,
61- urlQuery => {
62- // Don't sync from pages that use ?q for local filtering
63- if (pagesWithLocalFilter .has (route .name as string )) {
46+ (urlQuery ) => {
47+ if (pagesWithLocalFilter .has (route .name )) {
6448 return
6549 }
6650 const value = normalizeSearchParam (urlQuery )
@@ -80,15 +64,25 @@ function handleSearchFocus() {
8064}
8165
8266function handleSubmit() {
83- if (pagesWithLocalFilter .has (route .name as string )) {
67+ const query = searchQuery .value .trim ()
68+ if (pagesWithLocalFilter .has (route .name )) {
8469 router .push ({
8570 name: ' search' ,
86- query: {
87- q: searchQuery .value ,
88- },
71+ query: { q: query },
8972 })
90- } else {
73+ return
74+ }
75+
76+ if (route .name === ' search' ) {
9177 updateUrlQuery .flush ()
78+ return
79+ }
80+
81+ if (query ) {
82+ router .push ({
83+ name: ' search' ,
84+ query: { q: query },
85+ })
9286 }
9387}
9488
0 commit comments