Refactor: Move DashboardFilterProvider to pages directory
- Move DashboardFilterProvider component and tests from providers/ to pages/ - Update DashboardPage imports to reflect new structure - Update documentation with latest task progress Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -1,27 +1,3 @@
|
||||
### T-18 · Merge `useDashboardCountryData` and `useMapData` — near-identical hooks
|
||||
|
||||
**Where found:** `frontend/src/hooks/useDashboardCountryData.ts` and `frontend/src/hooks/useMapData.ts`
|
||||
|
||||
**Why this is needed:** Both hooks call `fetchBansByCountry`, maintain the same state shape (`countries`, `countryNames`, `bans`, `total`, `loading`, `error`), and implement the same abort-controller pattern. The only behavioural difference is that `useMapData` adds a 300ms debounce. Any bug fix must be applied to both.
|
||||
|
||||
**Goal:** A single `useBansByCountry` base hook; `useMapData` adds the debounce on top.
|
||||
|
||||
**What to do:**
|
||||
1. Create `useBansByCountry(range, origin, source, countryCode?)` — the shared fetch logic without debounce.
|
||||
2. Refactor `useDashboardCountryData` to wrap `useBansByCountry`.
|
||||
3. Refactor `useMapData` to wrap `useBansByCountry` and add the debounce layer.
|
||||
4. Keep the existing hook names as thin wrappers to preserve call sites.
|
||||
|
||||
**Possible traps and issues:**
|
||||
- `useMapData` returns `{ data }` (the full response object) whereas `useDashboardCountryData` unpacks `countries`, `countryNames`, `bans`, `total`. Normalise the return shape before collapsing.
|
||||
- Tests for each hook test them independently — update or merge.
|
||||
|
||||
**Docs changes needed:** None.
|
||||
|
||||
**Doc references:** `frontend/src/hooks/useDashboardCountryData.ts`, `frontend/src/hooks/useMapData.ts`
|
||||
|
||||
---
|
||||
|
||||
### T-19 · Move `DashboardFilterProvider` — page-scoped provider in wrong directory
|
||||
|
||||
**Where found:** `frontend/src/providers/DashboardFilterProvider.tsx` — instantiated only inside `DashboardPage.tsx`
|
||||
|
||||
Reference in New Issue
Block a user