11<script lang="ts" setup>
22import type { RepoNode } from " ../../server/utils/types" ;
33
4- const search = useSessionStorage (" search" , " " );
4+ const route = useRoute ();
5+ const router = useRouter ();
6+ const search = computed ({
7+ get : () => {
8+ const q = route .query .q ;
9+ return typeof q === " string" ? q : " " ;
10+ },
11+ set : (value : string ) => {
12+ const queryText = value .trim ();
13+ router .replace ({
14+ query: {
15+ ... route .query ,
16+ q: queryText || undefined ,
17+ },
18+ });
19+ },
20+ });
521const searchResults = ref <RepoNode []>([]);
622const isLoading = ref (false );
723
@@ -24,11 +40,10 @@ watch(
2440 isLoading .value = true ;
2541
2642 try {
27- const response = await fetch (
28- ` /api/repo/search?text=${encodeURIComponent (query )} ` ,
29- { signal: controller .signal },
30- );
31- const data = await response .json ();
43+ const data = await $fetch <{ nodes? : RepoNode [] }>(" /api/repo/search" , {
44+ query: { q: query },
45+ signal: controller .signal ,
46+ });
3247
3348 if (abortController !== controller ) {
3449 return ;
4762 }
4863 }
4964 },
50- { immediate: false },
65+ { immediate: true },
5166);
5267
5368const examples = [
@@ -78,7 +93,6 @@ const examples = [
7893 },
7994];
8095
81- const router = useRouter ();
8296function openFirstResult() {
8397 const [first] = searchResults .value ;
8498 if (first ) {
0 commit comments