From 2ccc7c6461dce0fdfb94bd2a5f4e2fc7c96ad41f Mon Sep 17 00:00:00 2001 From: Stephanie Dietz <49788645+StephDietz@users.noreply.github.com> Date: Tue, 19 Sep 2023 09:15:25 -0500 Subject: [PATCH] Removes unnecessary search state (#165) --- .../15-final/app/ui/invoices/pagination.tsx | 11 ++-- .../15-final/app/ui/invoices/table-search.tsx | 50 +++---------------- dashboard/15-final/app/ui/invoices/table.tsx | 8 ++- 3 files changed, 17 insertions(+), 52 deletions(-) diff --git a/dashboard/15-final/app/ui/invoices/pagination.tsx b/dashboard/15-final/app/ui/invoices/pagination.tsx index 640ae33..fd5e8d5 100644 --- a/dashboard/15-final/app/ui/invoices/pagination.tsx +++ b/dashboard/15-final/app/ui/invoices/pagination.tsx @@ -1,7 +1,7 @@ 'use client'; import { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/24/outline'; -import { usePathname, useSearchParams } from 'next/navigation'; +import { usePathname } from 'next/navigation'; import clsx from 'clsx'; import Link from 'next/link'; import { useEffect } from 'react'; @@ -10,13 +10,13 @@ import { useRouter } from 'next/navigation'; export default function PaginationButtons({ totalPages, currentPage, + searchParams, }: { totalPages: number; currentPage: number; + searchParams: { query: string; page: string }; }) { - const router = useRouter(); const pathname = usePathname(); - const searchParams = useSearchParams(); const pageNumbers = Array.from({ length: totalPages }, (_, i) => i + 1); const createPageUrl = (pageNumber: number) => { @@ -25,11 +25,6 @@ export default function PaginationButtons({ return `${pathname}?${newSearchParams.toString()}`; }; - useEffect(() => { - const newUrl = createPageUrl(currentPage); - router.push(newUrl); - }, [currentPage]); - const PreviousPageTag = currentPage === 1 ? 'p' : Link; const NextPageTag = currentPage === totalPages ? 'p' : Link; diff --git a/dashboard/15-final/app/ui/invoices/table-search.tsx b/dashboard/15-final/app/ui/invoices/table-search.tsx index 3e91012..546c214 100644 --- a/dashboard/15-final/app/ui/invoices/table-search.tsx +++ b/dashboard/15-final/app/ui/invoices/table-search.tsx @@ -1,17 +1,15 @@ 'use client'; import { MagnifyingGlassIcon } from '@heroicons/react/24/outline'; -import { usePathname, useRouter, useSearchParams } from 'next/navigation'; -import { useState, useTransition } from 'react'; +import { usePathname, useRouter } from 'next/navigation'; -export default function TableSearch() { +export default function TableSearch({ + searchParams, +}: { + searchParams: { query: string; page: string }; +}) { const { replace } = useRouter(); - const searchParams = useSearchParams()!; const pathname = usePathname(); - const [isPending, startTransition] = useTransition(); - - const currentQuery = searchParams.get('query') || ''; - const [inputValue, setInputValue] = useState(currentQuery); function handleSearch(term: string) { const params = new URLSearchParams(searchParams); @@ -20,10 +18,7 @@ export default function TableSearch() { } else { params.delete('query'); } - - startTransition(() => { - replace(`${pathname}?${params.toString()}`); - }); + replace(`${pathname}?${params.toString()}`); } return ( @@ -36,42 +31,13 @@ export default function TableSearch() { { - setInputValue(e.target.value); handleSearch(e.target.value); }} className="absolute inset-0 w-full rounded-md border border-gray-300 bg-transparent p-2 pl-8 text-sm" /> - {isPending && } - - ); -} - -function LoadingIcon() { - return ( -
- - - -
); } diff --git a/dashboard/15-final/app/ui/invoices/table.tsx b/dashboard/15-final/app/ui/invoices/table.tsx index 7d846ac..b10c711 100644 --- a/dashboard/15-final/app/ui/invoices/table.tsx +++ b/dashboard/15-final/app/ui/invoices/table.tsx @@ -79,8 +79,12 @@ export default async function InvoicesTable({
- - + +