mirror of
https://github.com/azaion/ui.git
synced 2026-06-21 10:31:10 +00:00
510df68bcf
Captures the full output of autodev existing-code Phase A through Step 4 (Code Testability Revision) for the Azaion UI workspace: - Step 1 Document: _docs/02_document/ (FINAL_report, architecture, glossary, components/, modules/, diagrams/, system-flows, module-layout) plus _docs/00_problem/ + _docs/01_solution/ + _docs/legacy/ + _docs/how_to_test + README. - Step 2 Architecture Baseline: architecture_compliance_baseline.md. - Step 3 Test Spec: _docs/02_document/tests/ (environment, test-data, blackbox/performance/resilience/security/ resource-limit tests, traceability-matrix), enum_spec_snapshot, expected_results/results_report.md (98 rows), plus the run-tests.sh + run-performance-tests.sh runners. - Step 4 Code Testability Revision: 01-testability-refactoring/ run dir (list-of-changes C01-C07, deferred_to_refactor, analysis/research_findings + refactoring_roadmap) and the 7 child task specs AZ-448..AZ-454 under _docs/02_tasks/todo/ plus _dependencies_table.md. - _docs/_autodev_state.md pins the cursor at Step 4 / refactor Phase 4 entry so /autodev resumes cleanly. Epic AZ-447 (UI testability gates) tracks the 7 child tasks that will land in subsequent commits. Co-authored-by: Cursor <cursoragent@cursor.com>
1.9 KiB
1.9 KiB
Module: src/hooks/useDebounce.ts
Source:
src/hooks/useDebounce.ts(12 lines) Topo batch: B1 (leaf)
Purpose
Generic React hook that delays propagation of a rapidly-changing value to its consumers, used to throttle search inputs against the backend.
Public interface
export function useDebounce<T>(value: T, delay: number): T
Returns the latest value only after delay milliseconds have elapsed without any further change. Generic in T, so callers can debounce strings, numbers, or any reference value (referential identity matters; see notes).
Internal logic
useState<T>(value) for the debounced output; useEffect registers a setTimeout(setDebounced, delay) and returns a clearTimeout cleanup. The effect re-runs whenever value or delay changes — each new input value cancels the pending timeout from the previous render and starts a fresh one.
Dependencies
- Internal: none.
- External:
react(useState,useEffect).
Consumers (intra-repo)
src/features/annotations/MediaList.tsx— debounces the media-name search input.src/features/dataset/DatasetPage.tsx— debounces the dataset name-search filter (specified as 400ms in_docs/ui_design/README.md§"Dataset Explorer", but the actual delay is set by the caller).
Data models
None.
Configuration
None.
External integrations
None.
Security
None.
Tests
None.
Notes / open questions
- The hook compares values by referential equality (
useEffectdeps array). Passing a fresh object literal each render — e.g.useDebounce({ q }, 300)— would re-trigger the timer endlessly. Current callers pass primitives only; safe. - No "leading edge" / "trailing edge" / "max wait" knobs. Adequate for the two current consumers; if/when richer behaviour is needed, prefer
useDebouncedCallbackfrom a library over extending this module.