Replace client-side state switching with proper Next.js routes: - /new - New scrape form - /jobs - Jobs list with table view - /jobs/[id] - Individual job details and logs - /analytics - Analytics overview (completed jobs) - /analytics/[id] - Analytics for specific job Add JobsContext for shared state across routes. Update Sidebar to use next/link with pathname matching. Root page redirects to /new. Also adds partial job status styling to JobsView. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
31 lines
840 B
TypeScript
31 lines
840 B
TypeScript
'use client';
|
|
|
|
import { useRouter } from 'next/navigation';
|
|
import ScraperTest from '@/components/ScraperTest';
|
|
import { useJobs } from '@/contexts/JobsContext';
|
|
import { JobStatus } from '@/components/ScraperTest';
|
|
|
|
export default function NewScrapePage() {
|
|
const router = useRouter();
|
|
const { addJob, refreshJobs } = useJobs();
|
|
|
|
const handleJobsChange = (jobs: JobStatus[]) => {
|
|
// Add new jobs to context
|
|
jobs.forEach(job => addJob(job));
|
|
};
|
|
|
|
const handleSelectReviews = (reviews: unknown[], businessName: string, jobId: string) => {
|
|
// Navigate to analytics page for this job
|
|
router.push(`/analytics/${jobId}`);
|
|
};
|
|
|
|
return (
|
|
<div className="h-full overflow-y-auto p-6">
|
|
<ScraperTest
|
|
onJobsChange={handleJobsChange}
|
|
onSelectReviews={handleSelectReviews}
|
|
/>
|
|
</div>
|
|
);
|
|
}
|