"use client"; import { useEffect, useState } from "react"; import type { Documentary, Chapter } from "@afterlife/shared"; import { ChapterNav } from "./ChapterNav"; import { ChapterContent } from "./ChapterContent"; import { AudioPlayer } from "./AudioPlayer"; import { ReadingProgress } from "./ReadingProgress"; import { useAudioPlayer } from "@/hooks/useAudioPlayer"; interface DocumentaryLayoutProps { documentary: Documentary; } export function DocumentaryLayout({ documentary }: DocumentaryLayoutProps) { const chapters = [...documentary.chapters].sort((a, b) => a.order - b.order); const [activeChapter, setActiveChapter] = useState(chapters[0]); const audio = useAudioPlayer(); useEffect(() => { const audioTracks = chapters .filter((ch) => ch.audioFile) .map((ch) => ({ id: ch.id, title: ch.title, url: ch.audioFile!.url, duration: ch.audioDuration ?? 0, })); audio.setTracks(audioTracks); if (audioTracks.length > 0) { audio.loadTrack(0); } }, []); // eslint-disable-line react-hooks/exhaustive-deps function handleSelectChapter(chapterId: number, index: number) { const chapter = chapters.find((c) => c.id === chapterId); if (chapter) { setActiveChapter(chapter); window.scrollTo({ top: 0, behavior: "smooth" }); const trackIndex = audio.tracks.findIndex((t) => t.id === chapterId); if (trackIndex !== -1) { audio.goToTrack(trackIndex); } } } return ( <> {/* Documentary header */}

{documentary.title}

{documentary.description && (

{documentary.description}

)}
audio.setContinuousMode(!audio.continuousMode) } /> ); }