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 &&