|
1 | 1 | import { TextAttributes } from '@opentui/core' |
2 | 2 | import { useKeyboard, useRenderer } from '@opentui/react' |
3 | | -import React, { useCallback, useEffect, useMemo, useState } from 'react' |
| 3 | +import React, { useCallback, useMemo, useState } from 'react' |
4 | 4 |
|
5 | 5 | import { AdBanner } from './ad-banner' |
6 | 6 | import { Button } from './button' |
7 | 7 | import { ChoiceAdBanner } from './choice-ad-banner' |
8 | 8 | import { ShimmerText } from './shimmer-text' |
9 | 9 | import { useGravityAd } from '../hooks/use-gravity-ad' |
10 | 10 | import { useLogo } from '../hooks/use-logo' |
| 11 | +import { useNow } from '../hooks/use-now' |
11 | 12 | import { useSheenAnimation } from '../hooks/use-sheen-animation' |
12 | 13 | import { useTerminalDimensions } from '../hooks/use-terminal-dimensions' |
13 | 14 | import { useTheme } from '../hooks/use-theme' |
@@ -95,11 +96,7 @@ export const WaitingRoomScreen: React.FC<WaitingRoomScreenProps> = ({ |
95 | 96 | if (session?.status === 'queued') return Date.parse(session.queuedAt) |
96 | 97 | return null |
97 | 98 | }, [session]) |
98 | | - const [now, setNow] = useState(() => Date.now()) |
99 | | - useEffect(() => { |
100 | | - const id = setInterval(() => setNow(Date.now()), 1000) |
101 | | - return () => clearInterval(id) |
102 | | - }, []) |
| 99 | + const now = useNow(1000, queuedAtMs !== null) |
103 | 100 | const elapsedMs = queuedAtMs ? now - queuedAtMs : 0 |
104 | 101 |
|
105 | 102 | const isQueued = session?.status === 'queued' |
|
0 commit comments