|
1 | | -import { useEffect, useState } from "react"; |
2 | 1 | import agendaData from "../pages/conf/agenda.json"; |
3 | 2 |
|
4 | 3 | // Videos become clickable on 2026-04-28 1:30 PM PDT (PDT = UTC-7 → 20:30 UTC). |
@@ -55,43 +54,15 @@ export const getVideoUrlForSpeaker = (slug: string): string | undefined => { |
55 | 54 | }; |
56 | 55 |
|
57 | 56 | /** |
58 | | - * Returns true once the shared release time has passed. The value is `false` |
59 | | - * during SSR/initial render to avoid hydration mismatch, then flips to `true` |
60 | | - * on the client if applicable. Re-checked every minute. |
61 | | - * |
62 | | - * Supports `?releaseNow` or `?streamNow` (case-insensitive, value optional; |
63 | | - * `0`/`false` opts out) to force-release for testing/previewing. |
| 57 | + * Post-event: time-based gating is suspended. Both hooks now always return |
| 58 | + * `true` so the site is permanently in its post-event state (videos clickable, |
| 59 | + * stream section shows the thank-you / recording card, no countdown, no |
| 60 | + * "We're live" indicator). The timestamp constants and `hasPreviewParam` |
| 61 | + * helper are kept in case time-gating needs to be re-enabled for a future |
| 62 | + * event. |
64 | 63 | */ |
65 | | -export const useVideoReleased = (): boolean => { |
66 | | - const [released, setReleased] = useState(false); |
67 | | - useEffect(() => { |
68 | | - const forceReleased = hasPreviewParam(["releaseNow", "streamNow"]); |
69 | | - const check = () => |
70 | | - setReleased(forceReleased || Date.now() >= VIDEO_RELEASE_TIMESTAMP); |
71 | | - check(); |
72 | | - const interval = window.setInterval(check, 60_000); |
73 | | - return () => window.clearInterval(interval); |
74 | | - }, []); |
75 | | - return released; |
76 | | -}; |
77 | | - |
78 | | -/** |
79 | | - * Returns true once the live stream release time has passed. SSR-safe. |
80 | | - * Supports `?streamNow` or `?releaseNow` (case-insensitive, value optional; |
81 | | - * `0`/`false` opts out) for preview. |
82 | | - */ |
83 | | -export const useStreamReleased = (): boolean => { |
84 | | - const [released, setReleased] = useState(false); |
85 | | - useEffect(() => { |
86 | | - const forceReleased = hasPreviewParam(["streamNow", "releaseNow"]); |
87 | | - const check = () => |
88 | | - setReleased(forceReleased || Date.now() >= STREAM_RELEASE_TIMESTAMP); |
89 | | - check(); |
90 | | - const interval = window.setInterval(check, 60_000); |
91 | | - return () => window.clearInterval(interval); |
92 | | - }, []); |
93 | | - return released; |
94 | | -}; |
| 64 | +export const useVideoReleased = (): boolean => true; |
| 65 | +export const useStreamReleased = (): boolean => true; |
95 | 66 |
|
96 | 67 | /** |
97 | 68 | * Convert a youtu.be or youtube.com URL into a youtube.com/embed/<id> URL. |
|
0 commit comments