Skip to content

Commit fee0e96

Browse files
Add debounce on search
1 parent 106bacc commit fee0e96

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

src/components/search.tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export function SearchProvider({ children }: React.PropsWithChildren) {
4949
const router = useRouter();
5050
const [isOpen, setIsOpen] = useState(false);
5151
const [initialQuery, setInitialQuery] = useState("");
52+
const searchTimer = useRef<ReturnType<typeof setTimeout> | null>(null);
5253

5354
const onOpen = useCallback(() => {
5455
setIsOpen(true);
@@ -154,6 +155,28 @@ export function SearchProvider({ children }: React.PropsWithChildren) {
154155
},
155156
}}
156157
hitComponent={Hit}
158+
transformSearchClient ={(originalClient) => {
159+
return {
160+
...originalClient,
161+
search(requests){
162+
if(searchTimer.current){
163+
clearTimeout(searchTimer.current);
164+
}
165+
return new Promise((resolve, reject) => {
166+
searchTimer.current = setTimeout(() => {
167+
// try-catch if original search fails synchronously
168+
try{
169+
// resolve handle internal promise
170+
resolve(originalClient.search(requests))
171+
}catch(e){
172+
reject(e)
173+
}
174+
}, 300);
175+
})
176+
}
177+
}
178+
}
179+
}
157180
transformItems={(items) => {
158181
items = items.map((item) => {
159182
item.url = rewriteURL(item.url);

0 commit comments

Comments
 (0)