import { useParams } from 'react-router-dom'; import { useGetDocument, useGetProgress } from '../generated/anthoLumeAPIV1'; interface Document { id: string; title: string; author: string; description?: string; isbn10?: string; isbn13?: string; words?: number; filepath?: string; created_at: string; updated_at: string; deleted: boolean; percentage?: number; total_time_seconds?: number; wpm?: number; seconds_per_percent?: number; last_read?: string; } interface Progress { document_id?: string; percentage?: number; created_at?: string; user_id?: string; device_name?: string; title?: string; author?: string; } // Helper function to format seconds nicely (mirroring legacy niceSeconds) function niceSeconds(seconds: number): string { if (seconds === 0) return 'N/A'; const days = Math.floor(seconds / 60 / 60 / 24); const remainingSeconds = seconds % (60 * 60 * 24); const hours = Math.floor(remainingSeconds / 60 / 60); const remainingAfterHours = remainingSeconds % (60 * 60); const minutes = Math.floor(remainingAfterHours / 60); const remainingSeconds2 = remainingAfterHours % 60; let result = ''; if (days > 0) result += `${days}d `; if (hours > 0) result += `${hours}h `; if (minutes > 0) result += `${minutes}m `; if (remainingSeconds2 > 0) result += `${remainingSeconds2}s`; return result || 'N/A'; } export default function DocumentPage() { const { id } = useParams<{ id: string }>(); const { data: docData, isLoading: docLoading } = useGetDocument(id || ''); const { data: progressData, isLoading: progressLoading } = useGetProgress(id || ''); if (docLoading || progressLoading) { return
Title
{document.title}
Author
{document.author}
Time Read
{document.total_time_seconds ? niceSeconds(document.total_time_seconds) : 'N/A'}
Progress
{percentage ? `${Math.round(percentage)}%` : '0%'}
Description
{document.description || 'N/A'}
Words
{document.words || 'N/A'}
Created
{new Date(document.created_at).toLocaleDateString()}
Updated
{new Date(document.updated_at).toLocaleDateString()}
Words / Minute:
{document.wpm || 'N/A'}
Est. Time Left:
{niceSeconds(totalTimeLeftSeconds)}