From 052858d5c97a84cc41aef2f001a728af329abfd8 Mon Sep 17 00:00:00 2001 From: Aleksander Nicacio da Silva <aleksander.nsilva@gmail.com> Date: Thu, 26 May 2022 18:36:07 -0300 Subject: [PATCH] Regression: VoIp wrap up modal not opening after call disconnect (#25651) --- .../client/components/Omnichannel/Tags.tsx | 2 +- .../providers/CallProvider/CallProvider.tsx | 18 +++++++++++------- .../sidebar/footer/voip/VoipFooter.stories.tsx | 2 -- .../client/sidebar/footer/voip/VoipFooter.tsx | 5 ----- .../client/sidebar/footer/voip/index.tsx | 3 --- 5 files changed, 12 insertions(+), 18 deletions(-) diff --git a/apps/meteor/client/components/Omnichannel/Tags.tsx b/apps/meteor/client/components/Omnichannel/Tags.tsx index 3ab4b9e7630..f0d13fec4df 100644 --- a/apps/meteor/client/components/Omnichannel/Tags.tsx +++ b/apps/meteor/client/components/Omnichannel/Tags.tsx @@ -10,7 +10,7 @@ import { formsSubscription } from '../../views/omnichannel/additionalForms'; import { FormSkeleton } from './Skeleton'; const Tags = ({ - tags, + tags = [], handler, error, tagRequired, diff --git a/apps/meteor/client/providers/CallProvider/CallProvider.tsx b/apps/meteor/client/providers/CallProvider/CallProvider.tsx index 1de2b14fa20..4df4506a9f1 100644 --- a/apps/meteor/client/providers/CallProvider/CallProvider.tsx +++ b/apps/meteor/client/providers/CallProvider/CallProvider.tsx @@ -1,5 +1,8 @@ -import type { IVoipRoom, IUser, VoipEventDataSignature } from '@rocket.chat/core-typings'; import { + IVoipRoom, + IUser, + VoipEventDataSignature, + VoipClientEvents, ICallerInfo, isVoipEventAgentCalled, isVoipEventAgentConnected, @@ -9,7 +12,7 @@ import { isVoipEventCallAbandoned, } from '@rocket.chat/core-typings'; import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; -import { useSetModal, useRoute, useUser, useSetting, useEndpoint, useStream } from '@rocket.chat/ui-contexts'; +import { useRoute, useUser, useSetting, useEndpoint, useStream } from '@rocket.chat/ui-contexts'; import { Random } from 'meteor/random'; import React, { useMemo, FC, useRef, useCallback, useEffect, useState } from 'react'; import { createPortal } from 'react-dom'; @@ -19,6 +22,7 @@ import { CustomSounds } from '../../../app/custom-sounds/client'; import { getUserPreference } from '../../../app/utils/client'; import { WrapUpCallModal } from '../../components/voip/modal/WrapUpCallModal'; import { CallContext, CallContextValue } from '../../contexts/CallContext'; +import { imperativeModal } from '../../lib/imperativeModal'; import { roomCoordinator } from '../../lib/rooms/roomCoordinator'; import { QueueAggregator } from '../../lib/voip/QueueAggregator'; import { useVoipClient } from './hooks/useVoipClient'; @@ -40,6 +44,7 @@ type NetworkState = 'online' | 'offline'; export const CallProvider: FC = ({ children }) => { const voipEnabled = useSetting('VoIP_Enabled'); const subscribeToNotifyUser = useStream('notify-user'); + const dispatchEvent = useEndpoint('POST', 'voip/events'); const result = useVoipClient(); const user = useUser(); @@ -50,11 +55,9 @@ export const CallProvider: FC = ({ children }) => { const [queueCounter, setQueueCounter] = useState(0); const [queueName, setQueueName] = useState(''); - const setModal = useSetModal(); - const openWrapUpModal = useCallback((): void => { - setModal(<WrapUpCallModal />); - }, [setModal]); + imperativeModal.open({ component: WrapUpCallModal }); + }, []); const [queueAggregator, setQueueAggregator] = useState<QueueAggregator>(); @@ -129,10 +132,11 @@ export const CallProvider: FC = ({ children }) => { const handleCallHangup = (_event: { roomId: string }): void => { setQueueName(queueAggregator.getCurrentQueueName()); openWrapUpModal(); + dispatchEvent({ event: VoipClientEvents['VOIP-CALL-ENDED'], rid: _event.roomId }); }; return subscribeToNotifyUser(`${user._id}/call.hangup`, handleCallHangup); - }, [openWrapUpModal, queueAggregator, subscribeToNotifyUser, user, voipEnabled]); + }, [openWrapUpModal, queueAggregator, subscribeToNotifyUser, user, voipEnabled, dispatchEvent]); useEffect(() => { if (!result.voipClient) { diff --git a/apps/meteor/client/sidebar/footer/voip/VoipFooter.stories.tsx b/apps/meteor/client/sidebar/footer/voip/VoipFooter.stories.tsx index 11a20ce21cb..f5d9a5242c2 100644 --- a/apps/meteor/client/sidebar/footer/voip/VoipFooter.stories.tsx +++ b/apps/meteor/client/sidebar/footer/voip/VoipFooter.stories.tsx @@ -49,7 +49,6 @@ export const IncomingCall = (): ReactElement => { createRoom={() => ''} openRoom={() => ''} callsInQueue='2 Calls In Queue' - openWrapUpCallModal={() => null} dispatchEvent={() => null} openedRoomInfo={{ v: { token: '' }, rid: '' }} anonymousText={'Anonymous'} @@ -88,7 +87,6 @@ export const InCall = (): ReactElement => { createRoom={() => ''} openRoom={() => ''} callsInQueue='2 Calls In Queue' - openWrapUpCallModal={() => null} dispatchEvent={() => null} openedRoomInfo={{ v: { token: '' }, rid: '' }} anonymousText={'Anonymous'} diff --git a/apps/meteor/client/sidebar/footer/voip/VoipFooter.tsx b/apps/meteor/client/sidebar/footer/voip/VoipFooter.tsx index e38971a3933..47380a6b030 100644 --- a/apps/meteor/client/sidebar/footer/voip/VoipFooter.tsx +++ b/apps/meteor/client/sidebar/footer/voip/VoipFooter.tsx @@ -24,7 +24,6 @@ type VoipFooterPropsType = { }; callsInQueue: string; - openWrapUpCallModal: () => void; createRoom: (caller: ICallerInfo) => IVoipRoom['_id']; openRoom: (rid: IVoipRoom['_id']) => void; dispatchEvent: (params: { event: VoipClientEvents; rid: string; comment?: string }) => void; @@ -46,7 +45,6 @@ export const VoipFooter = ({ createRoom, openRoom, callsInQueue, - openWrapUpCallModal, dispatchEvent, openedRoomInfo, anonymousText, @@ -137,9 +135,6 @@ export const VoipFooter = ({ e.stopPropagation(); toggleMic(false); togglePause(false); - openWrapUpCallModal(); - dispatchEvent({ event: VoipClientEvents['VOIP-CALL-ENDED'], rid: openedRoomInfo.rid }); - return callActions.end(); }} > diff --git a/apps/meteor/client/sidebar/footer/voip/index.tsx b/apps/meteor/client/sidebar/footer/voip/index.tsx index 29ba87935ac..ec6f83ff6d0 100644 --- a/apps/meteor/client/sidebar/footer/voip/index.tsx +++ b/apps/meteor/client/sidebar/footer/voip/index.tsx @@ -9,7 +9,6 @@ import { useOpenedRoomInfo, useQueueCounter, useQueueName, - useWrapUpModal, } from '../../../contexts/CallContext'; import { VoipFooter as VoipFooterComponent } from './VoipFooter'; @@ -23,7 +22,6 @@ export const VoipFooter = (): ReactElement | null => { const openRoom = useCallOpenRoom(); const queueCounter = useQueueCounter(); const queueName = useQueueName(); - const openWrapUpCallModal = useWrapUpModal(); const openedRoomInfo = useOpenedRoomInfo(); const [muted, setMuted] = useState(false); @@ -97,7 +95,6 @@ export const VoipFooter = (): ReactElement | null => { createRoom={createRoom} openRoom={openRoom} callsInQueue={getCallsInQueueText} - openWrapUpCallModal={openWrapUpCallModal} dispatchEvent={dispatchEvent} openedRoomInfo={openedRoomInfo} anonymousText={t('Anonymous')} -- GitLab