Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 92c5582c98 |
@@ -11,7 +11,7 @@ const App: React.FC = () => {
|
|||||||
const [volume, setVolume] = useState(100);
|
const [volume, setVolume] = useState(100);
|
||||||
const [volumeSettingIsLocked, setVolumeSettingIsLocked] = useState(false);
|
const [volumeSettingIsLocked, setVolumeSettingIsLocked] = useState(false);
|
||||||
const [songs, setSongs] = useState<PlaylistItem[]>([]);
|
const [songs, setSongs] = useState<PlaylistItem[]>([]);
|
||||||
const [_, setWs] = useState<WebSocket | null>(null);
|
const [ws, setWs] = useState<WebSocket | null>(null);
|
||||||
|
|
||||||
const fetchPlaylist = useCallback(async () => {
|
const fetchPlaylist = useCallback(async () => {
|
||||||
const playlist = await API.getPlaylist();
|
const playlist = await API.getPlaylist();
|
||||||
@@ -104,14 +104,25 @@ const App: React.FC = () => {
|
|||||||
fetchNowPlaying();
|
fetchNowPlaying();
|
||||||
}, [fetchPlaylist, fetchNowPlaying]);
|
}, [fetchPlaylist, fetchNowPlaying]);
|
||||||
|
|
||||||
// WebSocket connection
|
// Update WebSocket connection
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const ws = API.subscribeToEvents(handleWebSocketEvent);
|
const websocket = API.subscribeToEvents(handleWebSocketEvent);
|
||||||
setWs(ws);
|
setWs(websocket);
|
||||||
|
|
||||||
|
// Handle page visibility changes, so if the user navigates back to this tab, we reconnect the WebSocket
|
||||||
|
const handleVisibilityChange = () => {
|
||||||
|
if (document.visibilityState === 'visible' && (!ws || ws.readyState === WebSocket.CLOSED)) {
|
||||||
|
const newWs = API.subscribeToEvents(handleWebSocketEvent);
|
||||||
|
setWs(newWs);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
document.addEventListener('visibilitychange', handleVisibilityChange);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
if (ws) {
|
document.removeEventListener('visibilitychange', handleVisibilityChange);
|
||||||
ws.close();
|
if (websocket) {
|
||||||
|
websocket.close();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}, [handleWebSocketEvent]);
|
}, [handleWebSocketEvent]);
|
||||||
|
|||||||
Reference in New Issue
Block a user