From d4f6aa18959bc48010ad8736b9f1653a76b579a5 Mon Sep 17 00:00:00 2001 From: Aleksander Nicacio da Silva <aleksander.silva@rocket.chat> Date: Mon, 17 Feb 2025 18:36:19 -0300 Subject: [PATCH] fix: Livechat conversation not closing due to cross-tab interference (#35168) --- .changeset/rude-llamas-pay.md | 5 +++++ packages/livechat/src/lib/room.js | 7 +------ packages/livechat/src/routes/Chat/container.js | 5 ++--- 3 files changed, 8 insertions(+), 9 deletions(-) create mode 100644 .changeset/rude-llamas-pay.md diff --git a/.changeset/rude-llamas-pay.md b/.changeset/rude-llamas-pay.md new file mode 100644 index 00000000000..c58da7f2204 --- /dev/null +++ b/.changeset/rude-llamas-pay.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/livechat": patch +--- + +Fixes Livechat conversation not closing in a few scenarios due to cross-tab interference diff --git a/packages/livechat/src/lib/room.js b/packages/livechat/src/lib/room.js index f7e7e97df5f..ba272169278 100644 --- a/packages/livechat/src/lib/room.js +++ b/packages/livechat/src/lib/room.js @@ -24,12 +24,7 @@ export const closeChat = async ({ transcriptRequested } = {}) => { await handleTranscript(); } - const { room, department, config: { settings: { clearLocalStorageWhenChatEnded } = {} } = {} } = store.state; - - if (!room) { - console.warn('closeChat called without a room'); - return; - } + const { department, config: { settings: { clearLocalStorageWhenChatEnded } = {} } = {} } = store.state; await store.setState({ room: null, renderedTriggers: [] }); diff --git a/packages/livechat/src/routes/Chat/container.js b/packages/livechat/src/routes/Chat/container.js index e38a53a7db6..fddda874980 100644 --- a/packages/livechat/src/routes/Chat/container.js +++ b/packages/livechat/src/routes/Chat/container.js @@ -2,6 +2,7 @@ import { Component } from 'preact'; import { route } from 'preact-router'; import { withTranslation } from 'react-i18next'; +import Chat from './component'; import { Livechat } from '../../api'; import { ModalManager } from '../../components/Modal'; import { getAvatarUrl } from '../../helpers/baseUrl'; @@ -22,9 +23,8 @@ import constants from '../../lib/constants'; import { getLastReadMessage, loadConfig, processUnread, shouldMarkAsUnread } from '../../lib/main'; import { parentCall, runCallbackEventEmitter } from '../../lib/parentCall'; import { createToken } from '../../lib/random'; -import { initRoom, closeChat, loadMessages, loadMoreMessages, defaultRoomParams, getGreetingMessages } from '../../lib/room'; +import { initRoom, loadMessages, loadMoreMessages, defaultRoomParams, getGreetingMessages } from '../../lib/room'; import store from '../../store'; -import Chat from './component'; const ChatWrapper = ({ children, rid }) => { useRoomMessagesSubscription(rid); @@ -254,7 +254,6 @@ class ChatContainer extends Component { await dispatch({ alerts: (alerts.push(alert), alerts) }); } finally { await dispatch({ loading: false }); - await closeChat(); } }; -- GitLab