Self-hosted document scanner and media processing tools. - Rust Axum gateway + worker pool with NATS JetStream - Next.js 16 frontend with shadcn/ui - Scanner pipeline: edge detection, warp, binarization, OCR - Image tools: compress, resize, convert - PDF tools: merge, split, compress - CI/CD with Docker multi-stage build Co-Authored-By: Kilo <kilo@kilo.ai>
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
"use client";
|
|
|
|
import { useParams } from "next/navigation";
|
|
import { useJobStatus } from "@/hooks/use-job-status";
|
|
import { ProgressBar } from "@/components/tools/progress-bar";
|
|
import { ResultPreview } from "@/components/tools/result-preview";
|
|
|
|
export default function ScanResultPage() {
|
|
const params = useParams();
|
|
const id = params.id as string;
|
|
|
|
const { progress, stage, message, status, result, error } = useJobStatus(id, {
|
|
onComplete: () => {},
|
|
onError: () => {},
|
|
});
|
|
|
|
return (
|
|
<div className="container mx-auto px-4 py-8 max-w-3xl">
|
|
{status === "processing" && (
|
|
<ProgressBar progress={progress} stage={stage} message={message} status={status} />
|
|
)}
|
|
{status === "completed" && result && (
|
|
<ResultPreview result={result} onProcessAnother={() => window.location.href = "/scan"} />
|
|
)}
|
|
{status === "failed" && (
|
|
<div className="p-6 rounded-xl border glass text-center">
|
|
<p className="text-destructive font-medium">{error || "Processing failed"}</p>
|
|
</div>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|