export const dynamic = 'force-dynamic' /* import chaptersStatic from './chapters.json' assert { type: 'json' }; */ import Head from 'next/head' import { Container } from '@/components/Container' import { FormattedDate } from '@/components/FormattedDate' import { PlayButtonClient } from '@/components/player/PlayButtonClient' import Player from '@/app/Player' import { getEpisode } from '@/data/episodes' function parseTime(time) { const stepOne = time.split(','); const hms = stepOne.length > 0 && stepOne[0].split(':') const h = parseInt(hms[0], 10); const m = parseInt(hms[1], 10); const s = parseInt(hms[2], 10); return (h * 3600) + (m * 60) + s; } function humanTime(time) { const stepOne = time.split(','); return stepOne.length > 0 ? stepOne[0] : ''; } export default async function Page({ params }) { const episode = await getEpisode({ episodeSlug: params.slug }) const chaptersRes = episode?.chapters && await fetch(episode.chapters, { cache: 'no-store' }); /* const { chapters } = chaptersStatic */ const { chapters } = chaptersRes ? await chaptersRes.json() : { chapters: null } let chapterOffsets = [[0, 0]] if (chapters) { chapters.reduce(({ startTime: prevStartTime, title: prevTitle, acc }, { title, startTime }) => { const containsAd = prevTitle.includes('[Ad]') if (containsAd) { chapterOffsets.push([prevStartTime, acc + (startTime - prevStartTime)]) } return { startTime, title, acc: containsAd ? acc + (startTime - prevStartTime) : acc } }, { startTime: 0, title: '', acc: 0 }) } chapterOffsets = chapterOffsets.reverse() let date = new Date(episode.published) let audioPlayerData = { title: episode.title, audio: { src: episode.audio?.src, type: episode.audio?.type, }, link: `/${episode.slug}`, } return ( <>

{episode.title}

{episode.description}


{episode?.transcript && ( <>

Transcript

{episode.transcript.map(({ id, startTime, endTime, text }) => (

parseTime(startTime) > start)[1]} endTime={parseTime(endTime) + chapterOffsets.find(([start]) => parseTime(startTime) > start)[1]} /> {text}

))}
)}
) }