diff --git a/src/app/portfolio/[slug]/(portfolio)/bulk-upload/[uploadId]/StartAddressMatchingButton.tsx b/src/app/portfolio/[slug]/(portfolio)/bulk-upload/[uploadId]/StartAddressMatchingButton.tsx index ffe6c51..8f12612 100644 --- a/src/app/portfolio/[slug]/(portfolio)/bulk-upload/[uploadId]/StartAddressMatchingButton.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/bulk-upload/[uploadId]/StartAddressMatchingButton.tsx @@ -1,7 +1,7 @@ "use client"; -import { useState } from "react"; import { useRouter } from "next/navigation"; +import { useMutation } from "@tanstack/react-query"; import { ArrowRightIcon } from "@heroicons/react/24/outline"; interface Props { @@ -12,14 +12,9 @@ interface Props { export default function StartAddressMatchingButton({ portfolioId, uploadId, filename }: Props) { const router = useRouter(); - const [loading, setLoading] = useState(false); - const [error, setError] = useState(null); - async function handleStart() { - setLoading(true); - setError(null); - - try { + const { mutate, isPending, error } = useMutation({ + mutationFn: async () => { const taskRes = await fetch("/api/tasks", { method: "POST", headers: { "Content-Type": "application/json" }, @@ -52,24 +47,22 @@ export default function StartAddressMatchingButton({ portfolioId, uploadId, file const data = await matchRes.json().catch(() => ({})); throw new Error(data.error ?? "Failed to start address matching"); } - + }, + onSuccess: () => { router.refresh(); - } catch (err) { - setError(err instanceof Error ? err.message : "Something went wrong"); - setLoading(false); - } - } + }, + }); return (
- {error &&

{error}

} + {error && ( +

+ {error instanceof Error ? error.message : "Something went wrong"} +

+ )}
); } diff --git a/src/app/portfolio/[slug]/(portfolio)/bulk-upload/page.tsx b/src/app/portfolio/[slug]/(portfolio)/bulk-upload/page.tsx index cc5a949..281f574 100644 --- a/src/app/portfolio/[slug]/(portfolio)/bulk-upload/page.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/bulk-upload/page.tsx @@ -1,5 +1,3 @@ -"use server"; - import { db } from "@/app/db/db"; import { bulkAddressUploads } from "@/app/db/schema/bulk_address_uploads"; import { eq, desc } from "drizzle-orm";