Seems to avoid almost all invalid states (hang up while viewing another lobby and hitting join seems to black screen, sets the active call as the previous active room id, but does join the viewed room correctly)

This commit is contained in:
Gigiaj 2025-05-25 21:29:53 -05:00
parent 22903c9340
commit 108eb60b4a

View file

@ -207,15 +207,14 @@ export function CallProvider({ children }: CallProviderProps) {
(nextRoom: string) => {
setIsCallActive(false);
if (typeof nextRoom !== 'string') {
if (viewedCallRoomId === activeCallRoomId) {
if (activeCallRoomId && viewedCallRoomId === activeCallRoomId) {
setIsPrimaryIframe(!isPrimaryIframe);
} else {
setViewedCallRoomId(activeCallRoomId);
}
logger.error(`${activeCallRoomId} ${viewedCallRoomId}`);
setViewedCallRoomId(activeCallRoomId);
} else if (viewedCallRoomId !== null) {
setIsPrimaryIframe(!isPrimaryIframe);
setViewedCallRoomId(null);
}
} else if (activeCallRoomId) setViewedCallRoomId(nextRoom);
setActiveClientWidgetApi(null, null, null);
setActiveCallRoomId(null);
@ -323,6 +322,8 @@ export function CallProvider({ children }: CallProviderProps) {
activeClientWidgetApi?.removeAllListeners();
activeClientWidgetApi?.transport.send(WIDGET_HANGUP_ACTION, {}).then(() => {
setViewedAsActive();
setViewedCallRoomIdState(null);
setViewedClientWidgetApi(null, null, null);
});
} else {
setIsCallActive(true);