From 71d57bdd2e8d28996229a00059e6e05e206f592c Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Wed, 18 May 2022 17:45:58 -0300 Subject: [PATCH] [FIX] One of the triggers was not working correctly (#25409) * [FIX] One of the triggers was not working correctly * fix html iteration * eslint fix Co-authored-by: Tiago Evangelista Pinto --- packages/livechat/src/components/App/App.js | 1 + packages/livechat/src/lib/triggers.js | 25 ++++++++----------- .../src/routes/TriggerMessage/component.js | 4 +-- .../src/routes/TriggerMessage/container.js | 5 ++-- packages/livechat/tsconfig.json | 2 +- 5 files changed, 18 insertions(+), 19 deletions(-) diff --git a/packages/livechat/src/components/App/App.js b/packages/livechat/src/components/App/App.js index f1893bee6c20..e2161042b07b 100644 --- a/packages/livechat/src/components/App/App.js +++ b/packages/livechat/src/components/App/App.js @@ -117,6 +117,7 @@ export class App extends Component { } else { dispatchRestore(); } + Triggers.callbacks.emit('chat-opened-by-visitor'); } handleOpenWindow = () => { diff --git a/packages/livechat/src/lib/triggers.js b/packages/livechat/src/lib/triggers.js index 0df433e6ba35..98c1bf9e65ab 100644 --- a/packages/livechat/src/lib/triggers.js +++ b/packages/livechat/src/lib/triggers.js @@ -1,3 +1,4 @@ +import mitt from 'mitt'; import { route } from 'preact-router'; import { Livechat } from '../api'; @@ -59,6 +60,7 @@ class Triggers { this._triggers = []; this._enabled = true; Triggers.instance = this; + this.callbacks = mitt(); } return Triggers.instance; @@ -89,8 +91,8 @@ class Triggers { } async fire(trigger) { - const { token, firedTriggers = [] } = store.state; - if (!this._enabled) { + const { token, firedTriggers = [], user } = store.state; + if (!this._enabled || user) { return; } const { actions } = trigger; @@ -121,7 +123,10 @@ class Triggers { parentCall('callback', ['assign-agent', normalizeAgent(agent)]); } - route('/trigger-messages'); + const foundCondition = trigger.conditions.find((c) => c.name === 'chat-opened-by-visitor'); + if (!foundCondition) { + route('/trigger-messages'); + } store.setState({ minimized: false }); }); } @@ -136,11 +141,6 @@ class Triggers { processRequest(request) { this._requests.push(request); - if (!this._started) { - return; - } - - this.processTriggers(); } processTriggers() { @@ -163,13 +163,10 @@ class Triggers { break; case 'chat-opened-by-visitor': const openFunc = () => { - const { user } = store.state; - if (user) { - store.off('change', openFunc); - this.fire(trigger); - } + this.fire(trigger); + this.callbacks.off('chat-opened-by-visitor', openFunc); }; - store.on('change', openFunc); + this.callbacks.on('chat-opened-by-visitor', openFunc); break; } }); diff --git a/packages/livechat/src/routes/TriggerMessage/component.js b/packages/livechat/src/routes/TriggerMessage/component.js index a9906bc8c8f7..41f18db445f3 100644 --- a/packages/livechat/src/routes/TriggerMessage/component.js +++ b/packages/livechat/src/routes/TriggerMessage/component.js @@ -18,9 +18,9 @@ class TriggerMessage extends Component { componentDidUpdate() { let height = 0; - this.ref.current.base.children.forEach((el) => { + for (const el of this.ref.current.base.children) { height += el.scrollHeight; - }); + } parentCall('resizeWidget', height); } diff --git a/packages/livechat/src/routes/TriggerMessage/container.js b/packages/livechat/src/routes/TriggerMessage/container.js index 40765f87cc1a..e46f7fd2fa89 100644 --- a/packages/livechat/src/routes/TriggerMessage/container.js +++ b/packages/livechat/src/routes/TriggerMessage/container.js @@ -8,15 +8,16 @@ import TriggerMessage from './component'; export class TriggerMessageContainer extends Component { - handleStart() { + handleStart(props) { parentCall('setFullScreenDocumentMobile'); parentCall('openWidget'); + props.onRestore(); route('/'); } render = (props) => { parentCall('resetDocumentStyle'); - return ; + return this.handleStart(props)} {...props} />; } } diff --git a/packages/livechat/tsconfig.json b/packages/livechat/tsconfig.json index 2d0a2cf459aa..286861613866 100644 --- a/packages/livechat/tsconfig.json +++ b/packages/livechat/tsconfig.json @@ -11,6 +11,6 @@ }, "exclude": [ "./node_modules", - "./build" + "./dist" ] }