fix(webapp): require realtime before requesting streams

This commit is contained in:
2026-04-09 15:40:00 +01:00
parent 933f3d0b25
commit f7c3eafb54

View File

@@ -1577,6 +1577,28 @@ const startSocketHeartbeat = () => {
}, SOCKET_HEARTBEAT_INTERVAL_MS);
};
const ensureRealtimeConnection = async ({ timeoutMs = 4000 } = {}) => {
if (socket?.connected || getAppState().socketConnected) {
return true;
}
if (!getAppState().deviceToken) {
return false;
}
connectSocket();
const startedAt = Date.now();
while (Date.now() - startedAt < timeoutMs) {
if (socket?.connected || getAppState().socketConnected) {
return true;
}
await sleep(100);
}
return Boolean(socket?.connected || getAppState().socketConnected);
};
const connectSocket = () => {
const { deviceToken } = getAppState();
if (!deviceToken) return;
@@ -2231,6 +2253,12 @@ const actions = {
},
async requestStream(cameraDeviceId) {
const realtimeReady = await ensureRealtimeConnection();
if (!realtimeReady) {
pushToast('Realtime connection unavailable. Reconnect and try again.', 'error');
return;
}
try {
requestedStreams.add(cameraDeviceId);
await api.streams.request(cameraDeviceId);