From 0e1e7d152839ebcccd627273f328fc2f4ea2b885 Mon Sep 17 00:00:00 2001 From: lukasbicus Date: Wed, 13 Nov 2024 11:41:10 +0100 Subject: [PATCH] Implement favorites functionality (#23) * Update plan.md * Use enum AppActionTypes * Remove unused page scan-card. * Implement mark favorite action. * Cleanup in reducer.spec.ts * Implement mark favorite * Rename filterByQuery.ts to filter.ts * Add favoriteFilter function * Implement ToggleShowFavoritesOnlyAction * Add plan to my cards * Move my cards page content to my card comp. * Filter cards by favorite prop. * Remove unused filterByQuery * Rename my-cards to my-cards-page. * Extract cards to CardsList comp. * Handle no carts states. * Add a bug * Adjust names. --- .../add-cards/predefined-companies-list.tsx | 8 +- .../my-cards/{my-cards.tsx => cards-list.tsx} | 40 +++++--- app/(homescreens)/my-cards/my-cards-page.tsx | 98 +++++++++++++++++++ app/(homescreens)/my-cards/page.tsx | 40 +------- app/card/card-detail-page.tsx | 3 +- app/create-card/create-card-form.tsx | 3 +- app/import-data/import-data-page.tsx | 3 +- app/lib/app-state/reducer.spec.ts | 84 +++++++++++++--- app/lib/app-state/reducer.ts | 50 ++++++++-- app/lib/filterByQuery.ts | 12 --- app/lib/filters.ts | 14 +++ app/scan-card/page.tsx | 3 - app/ui/main-message.tsx | 4 +- plan.md | 6 +- 14 files changed, 273 insertions(+), 95 deletions(-) rename app/(homescreens)/my-cards/{my-cards.tsx => cards-list.tsx} (51%) create mode 100644 app/(homescreens)/my-cards/my-cards-page.tsx delete mode 100644 app/lib/filterByQuery.ts create mode 100644 app/lib/filters.ts delete mode 100644 app/scan-card/page.tsx diff --git a/app/(homescreens)/add-cards/predefined-companies-list.tsx b/app/(homescreens)/add-cards/predefined-companies-list.tsx index d8d80d9..66f6af7 100644 --- a/app/(homescreens)/add-cards/predefined-companies-list.tsx +++ b/app/(homescreens)/add-cards/predefined-companies-list.tsx @@ -1,6 +1,6 @@ 'use client'; -import { filterByQuery } from '@/app/lib/filterByQuery'; +import { getNameFilter } from '@/app/lib/filters'; import { predefinedCompanies } from '@/app/lib/predefined-companies'; import { Routes } from '@/app/lib/shared'; import Image from 'next/image'; @@ -10,9 +10,13 @@ import { useSearchParams } from 'next/navigation'; export function PredefinedCompaniesList() { const searchParams = useSearchParams(); const query = searchParams.get('query')?.toString(); + + const companies = query + ? predefinedCompanies.filter(getNameFilter(query)) + : predefinedCompanies; return (