This commit is contained in:
Flatlogic Bot 2026-04-05 15:33:32 +00:00
parent 3ea6b2dc42
commit 0dfcc2039f

View File

@ -55,20 +55,25 @@ const portalHighlights = [
]; ];
const fallbackTickerItems = [ const fallbackTickerItems = [
{ id: 'fallback-1', title: 'Prime Time Studio', stream_type: 'video', status: 'live', starts_at: new Date().toISOString() }, { id: 'fallback-1', title: 'Prime Time Studio', stream_type: 'video', status: 'live', starts_at: '2026-04-05T18:00:00.000Z' },
{ id: 'fallback-2', title: 'Evening Bulletin', stream_type: 'audio', status: 'scheduled', starts_at: new Date(Date.now() + 45 * 60 * 1000).toISOString() }, { id: 'fallback-2', title: 'Evening Bulletin', stream_type: 'audio', status: 'scheduled', starts_at: '2026-04-05T18:45:00.000Z' },
{ id: 'fallback-3', title: 'Culture Call-In', stream_type: 'audio', status: 'live', starts_at: new Date().toISOString() }, { id: 'fallback-3', title: 'Culture Call-In', stream_type: 'audio', status: 'live', starts_at: '2026-04-05T19:30:00.000Z' },
{ id: 'fallback-4', title: 'Weekend Music Hour', stream_type: 'video', status: 'scheduled', starts_at: new Date(Date.now() + 2 * 60 * 60 * 1000).toISOString() }, { id: 'fallback-4', title: 'Weekend Music Hour', stream_type: 'video', status: 'scheduled', starts_at: '2026-04-05T20:00:00.000Z' },
]; ];
export default function HomePage() { export default function HomePage() {
const router = useRouter(); const router = useRouter();
const [tickerStreams, setTickerStreams] = useState<any[]>([]); const [tickerStreams, setTickerStreams] = useState<any[]>([]);
const [selectedTickerStreamId, setSelectedTickerStreamId] = useState(''); const [selectedTickerStreamId, setSelectedTickerStreamId] = useState('');
const [hasHydrated, setHasHydrated] = useState(false);
const [isNowPlayingVisible, setIsNowPlayingVisible] = useState(false); const [isNowPlayingVisible, setIsNowPlayingVisible] = useState(false);
const [isNowPlayingMinimized, setIsNowPlayingMinimized] = useState(false); const [isNowPlayingMinimized, setIsNowPlayingMinimized] = useState(false);
const [hasDismissedNowPlaying, setHasDismissedNowPlaying] = useState(false); const [hasDismissedNowPlaying, setHasDismissedNowPlaying] = useState(false);
useEffect(() => {
setHasHydrated(true);
}, []);
useEffect(() => { useEffect(() => {
let isMounted = true; let isMounted = true;
@ -96,7 +101,13 @@ export default function HomePage() {
}; };
}, []); }, []);
const tickerItems = useMemo(() => (tickerStreams.length ? tickerStreams : fallbackTickerItems), [tickerStreams]); const tickerItems = useMemo(() => {
if (!hasHydrated) {
return [];
}
return tickerStreams.length ? tickerStreams : fallbackTickerItems;
}, [hasHydrated, tickerStreams]);
const queryStreamId = useMemo(() => getPublicStreamQueryId(router.query.stream), [router.query.stream]); const queryStreamId = useMemo(() => getPublicStreamQueryId(router.query.stream), [router.query.stream]);
useEffect(() => { useEffect(() => {