// src/pages/admin/FlyerReviewPage.tsx import React, { useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; import { getFlyersForReview } from '../../services/apiClient'; import { logger } from '../../services/logger.client'; import type { Flyer } from '../../types'; import { LoadingSpinner } from '../../components/LoadingSpinner'; import { format } from 'date-fns'; export const FlyerReviewPage: React.FC = () => { const [flyers, setFlyers] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchFlyers = async () => { setIsLoading(true); setError(null); try { const response = await getFlyersForReview(); if (!response.ok) { throw new Error((await response.json()).message || 'Failed to fetch flyers for review.'); } setFlyers(await response.json()); } catch (err) { const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred while fetching data.'; logger.error({ err }, 'Failed to fetch flyers for review'); setError(errorMessage); } finally { setIsLoading(false); } }; fetchFlyers(); }, []); return (
← Back to Admin Dashboard

Flyer Review Queue

Review flyers that were processed with low confidence by the AI.

{isLoading && (
)} {error && (
{error}
)} {!isLoading && !error && (
    {flyers.length === 0 ? (
  • The review queue is empty. Great job!
  • ) : ( flyers.map((flyer) => (
  • {flyer.store?.name

    {flyer.store?.name || 'Unknown Store'}

    {flyer.file_name}

    Uploaded: {format(new Date(flyer.created_at), 'MMM d, yyyy')}

  • )) )}
)}
); };