import React, { useState, useEffect } from 'react'; import Card from '../components/Card'; import Button from '../components/Button'; import { api } from '../utils/api'; import type { HistoryItem } from '../types'; const History: React.FC = () => { const [history, setHistory] = useState([]); const [loading, setLoading] = useState(true); const [page, setPage] = useState(1); const [totalPages, setTotalPages] = useState(1); useEffect(() => { loadHistory(); }, [page]); const loadHistory = async () => { setLoading(true); try { const data = await api.getHistory(page); setHistory(data.items); setTotalPages(data.total_pages); } catch (error) { console.error('Failed to load history:', error); } finally { setLoading(false); } }; const formatDate = (dateString: string) => { const date = new Date(dateString); return date.toLocaleString(); }; const getStatusBadge = (status: string) => { const badges = { success: { label: 'Success', className: 'pstb-badge-success' }, failed: { label: 'Failed', className: 'pstb-badge-error' }, pending: { label: 'Pending', className: 'pstb-badge-pending' }, }; const badge = badges[status as keyof typeof badges] || badges.pending; return {badge.label}; }; if (loading && page === 1) { return
Loading history...
; } return (
{history.length === 0 ? (

No generation history yet. Start by generating some content!

) : ( <>
{history.map((item) => (
{item.parameters.topic || 'Untitled'} {getStatusBadge(item.status)}
{formatDate(item.created_at)}
Provider: {item.ai_provider} Post Type: {item.parameters.post_type || 'post'} Tone: {item.parameters.tone || 'N/A'} Length: {item.parameters.length || 'N/A'}
{item.parameters.target_audience && (
Target Audience: {item.parameters.target_audience}
)} {item.parameters.seo_keywords && (
SEO Keywords: {item.parameters.seo_keywords}
)} {item.error_message && (
Error: {item.error_message}
)} {item.post_id && ( )}
))}
{totalPages > 1 && (
Page {page} of {totalPages}
)} )}
); }; export default History;