"use client"; import { useState } from "react"; import { runDuplicateDetectionAction, type DuplicateScope, type RunDuplicateDetectionResult, } from "../actions"; type Status = | { kind: "idle" } | { kind: "running" } | { kind: "done"; result: RunDuplicateDetectionResult } | { kind: "error"; message: string }; export function RunDuplicateDetectionButton() { const [scope, setScope] = useState("shorts"); const [status, setStatus] = useState({ kind: "idle" }); async function handleClick() { setStatus({ kind: "running" }); try { const result = await runDuplicateDetectionAction(scope); setStatus({ kind: "done", result }); } catch (e) { setStatus({ kind: "error", message: (e as Error).message }); } } const running = status.kind === "running"; return (
{status.kind === "done" && status.result.ok && ( {status.result.clusters} cluster(s) ·{" "} {status.result.videosInClusters} video(s) )} {status.kind === "done" && !status.result.ok && ( {status.result.error} )} {status.kind === "error" && ( {status.message} )}
); }