Close incoming Element call toast when viewing the call lobby (#9375)
parent
6b1ee13c28
commit
4ff9681408
|
@ -34,6 +34,8 @@ import {
|
||||||
import { useCall } from "../hooks/useCall";
|
import { useCall } from "../hooks/useCall";
|
||||||
import { useRoomState } from "../hooks/useRoomState";
|
import { useRoomState } from "../hooks/useRoomState";
|
||||||
import { ButtonEvent } from "../components/views/elements/AccessibleButton";
|
import { ButtonEvent } from "../components/views/elements/AccessibleButton";
|
||||||
|
import { useDispatcher } from "../hooks/useDispatcher";
|
||||||
|
import { ActionPayload } from "../dispatcher/payloads";
|
||||||
|
|
||||||
export const getIncomingCallToastKey = (stateKey: string) => `call_${stateKey}`;
|
export const getIncomingCallToastKey = (stateKey: string) => `call_${stateKey}`;
|
||||||
|
|
||||||
|
@ -60,6 +62,16 @@ export function IncomingCallToast({ callEvent }: Props) {
|
||||||
}
|
}
|
||||||
}, [latestEvent, dismissToast]);
|
}, [latestEvent, dismissToast]);
|
||||||
|
|
||||||
|
useDispatcher(defaultDispatcher, useCallback((payload: ActionPayload) => {
|
||||||
|
if (
|
||||||
|
payload.action === Action.ViewRoom
|
||||||
|
&& payload.room_id === roomId
|
||||||
|
&& payload.view_call
|
||||||
|
) {
|
||||||
|
dismissToast();
|
||||||
|
}
|
||||||
|
}, [roomId, dismissToast]));
|
||||||
|
|
||||||
const onJoinClick = useCallback((e: ButtonEvent): void => {
|
const onJoinClick = useCallback((e: ButtonEvent): void => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
||||||
|
|
|
@ -155,4 +155,18 @@ describe("IncomingCallEvent", () => {
|
||||||
|
|
||||||
defaultDispatcher.unregister(dispatcherRef);
|
defaultDispatcher.unregister(dispatcherRef);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("closes toast when the call lobby is viewed", async () => {
|
||||||
|
renderToast();
|
||||||
|
|
||||||
|
defaultDispatcher.dispatch({
|
||||||
|
action: Action.ViewRoom,
|
||||||
|
room_id: room.roomId,
|
||||||
|
view_call: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
await waitFor(() => expect(toastStore.dismissToast).toHaveBeenCalledWith(
|
||||||
|
getIncomingCallToastKey(call.event.getStateKey()!),
|
||||||
|
));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue