MCPcopy Index your code
hub / github.com/nukeop/nuclear / useInitialSync

Function useInitialSync

packages/player/src/remoteControl/useInitialSync.ts:19–51  ·  view source on GitHub ↗
(connectionStatus: ConnectionStatus)

Source from the content-addressed store, hash-verified

17};
18
19export const useInitialSync = (connectionStatus: ConnectionStatus) => {
20 const refetchAll = useCallback(async () => {
21 const { setQueue, setPlayback, setSettings, setSynced } =
22 useRemoteStore.getState();
23
24 try {
25 const [queue, playback, settings] = await Promise.all([
26 fetchJSON<Queue>('/api/queue'),
27 fetchJSON<PlaybackState>('/api/playback'),
28 fetchJSON<SettingsState>('/api/settings'),
29 ]);
30
31 setQueue(queue);
32 setPlayback(playback);
33 setSettings(settings);
34 setSynced(true);
35 } catch (error) {
36 console.error('Initial sync failed:', error);
37 }
38 }, []);
39
40 const prevStatus = useRef(connectionStatus);
41
42 useEffect(() => {
43 if (
44 prevStatus.current !== 'connected' &&
45 connectionStatus === 'connected'
46 ) {
47 refetchAll();
48 }
49 prevStatus.current = connectionStatus;
50 }, [connectionStatus, refetchAll]);
51};

Callers 1

useRemoteStateFunction · 0.90

Calls 3

fetchJSONFunction · 0.85
getStateMethod · 0.80
errorMethod · 0.80

Tested by

no test coverage detected