Commit 43109f9
authored
feat: search-as-you-type with debounce + race-free responses (fixes empty-query 400) (#24)
* fix: don't fire search request when input is empty
Pressing Enter on an empty search bar was firing GET /v1/search?query=
which the API rejects with 400 Bad Request. Now guards against empty
and whitespace-only values before making the request, and hides any
previous results.
* feat: debounce search + min query length + race-free responses
On top of the empty-query guard, add:
- Debounce 300ms: a user typing "load-test-34" fires ONE request
instead of 12 (one per character)
- Minimum query length of 2: single-character inputs don't fire
- Race-free responses: only the latest query's response updates the
dropdown; older in-flight responses are ignored (prevents stale
results when typing quickly)
Input event triggers the debounced search (search-as-you-type), Enter
flushes any pending timer and searches immediately.1 parent 0fb22ab commit 43109f9
1 file changed
Lines changed: 39 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
16 | 22 | | |
17 | | - | |
18 | | - | |
| 23 | + | |
| 24 | + | |
19 | 25 | | |
20 | 26 | | |
21 | 27 | | |
22 | 28 | | |
23 | | - | |
| 29 | + | |
| 30 | + | |
24 | 31 | | |
25 | 32 | | |
26 | 33 | | |
27 | 34 | | |
28 | | - | |
| 35 | + | |
29 | 36 | | |
30 | 37 | | |
31 | 38 | | |
32 | 39 | | |
33 | 40 | | |
34 | 41 | | |
35 | 42 | | |
36 | | - | |
| 43 | + | |
37 | 44 | | |
38 | 45 | | |
39 | | - | |
40 | | - | |
| 46 | + | |
| 47 | + | |
41 | 48 | | |
42 | | - | |
43 | | - | |
44 | 49 | | |
45 | 50 | | |
46 | 51 | | |
47 | | - | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
48 | 73 | | |
49 | | - | |
| 74 | + | |
50 | 75 | | |
51 | 76 | | |
52 | | - | |
| 77 | + | |
53 | 78 | | |
54 | 79 | | |
55 | 80 | | |
56 | | - | |
| 81 | + | |
0 commit comments