diff --git a/packages/livechat/src/lib/hooks.js b/packages/livechat/src/lib/hooks.js index 4560d74467426..584a29f27fc3e 100644 --- a/packages/livechat/src/lib/hooks.js +++ b/packages/livechat/src/lib/hooks.js @@ -6,6 +6,7 @@ import CustomFields from './customFields'; import { loadConfig, updateBusinessUnit } from './main'; import { parentCall } from './parentCall'; import { createToken } from './random'; +import { loadMessages } from './room'; import Triggers from './triggers'; const createOrUpdateGuest = async (guest) => { @@ -60,13 +61,17 @@ const api = { }); }, - setDepartment(value) { - const { config: { departments = [] } } = store.state; + async setDepartment(value) { + const { config: { departments = [] }, user: { department: existingDepartment } = {} } = store.state; - const dept = departments.find((dep) => dep._id === value || dep.name === value); - const department = (dept && dept._id) || ''; + const department = departments.find((dep) => dep._id === value || dep.name === value)?._id || ''; updateIframeGuestData({ department }); + + if (department !== existingDepartment) { + await loadConfig(); + await loadMessages(); + } }, async setBusinessUnit(newBusinessUnit) { diff --git a/packages/livechat/src/lib/main.js b/packages/livechat/src/lib/main.js index 34d065a048d28..c099743a5233a 100644 --- a/packages/livechat/src/lib/main.js +++ b/packages/livechat/src/lib/main.js @@ -42,6 +42,7 @@ export const loadConfig = async () => { const { token, businessUnit = null, + iframe: { guest: { department } = {} } = {}, } = store.state; Livechat.credentials.token = token; @@ -56,6 +57,7 @@ export const loadConfig = async () => { } = await Livechat.config({ token, ...businessUnit && { businessUnit }, + ...department && { department }, }); await store.setState({ diff --git a/packages/livechat/src/routes/SwitchDepartment/connector.js b/packages/livechat/src/routes/SwitchDepartment/connector.js index 6ae9b48af1312..42d5a54980d43 100644 --- a/packages/livechat/src/routes/SwitchDepartment/connector.js +++ b/packages/livechat/src/routes/SwitchDepartment/connector.js @@ -16,10 +16,11 @@ const SwitchDepartmentConnector = ({ ref, ...props }) => ( fontColor: customFontColor, iconColor: customIconColor, } = {}, + guest, } = {}, + iframe, room, loading = false, - department, dispatch, alerts, token, @@ -33,7 +34,8 @@ const SwitchDepartmentConnector = ({ ref, ...props }) => ( iconColor: customIconColor, }} loading={loading} - departments={departments.filter((dept) => dept.showOnRegistration && dept._id !== department)} + iframe={iframe} + departments={departments.filter((dept) => dept.showOnRegistration && dept._id !== guest?.department)} dispatch={dispatch} room={room} alerts={alerts} diff --git a/packages/livechat/src/routes/SwitchDepartment/container.js b/packages/livechat/src/routes/SwitchDepartment/container.js index 7d38047eaff45..035a235c2b97d 100644 --- a/packages/livechat/src/routes/SwitchDepartment/container.js +++ b/packages/livechat/src/routes/SwitchDepartment/container.js @@ -19,7 +19,7 @@ class SwitchDepartmentContainer extends Component { } handleSubmit = async (fields) => { - const { alerts, dispatch, room, token, t } = this.props; + const { alerts, dispatch, room, token, t, guest, iframe } = this.props; const { department } = fields; const confirm = await this.confirmChangeDepartment(); @@ -42,7 +42,7 @@ class SwitchDepartmentContainer extends Component { throw t('no_available_agents_to_transfer'); } - await dispatch({ department, loading: false }); + await dispatch({ iframe: { ...iframe, guest: { ...guest, department } }, loading: false }); await loadConfig(); await ModalManager.alert({ diff --git a/packages/livechat/widget-demo.html b/packages/livechat/widget-demo.html index 9634f6981e65f..050f20918a3b3 100644 --- a/packages/livechat/widget-demo.html +++ b/packages/livechat/widget-demo.html @@ -48,7 +48,7 @@ var h = d.getElementsByTagName(s)[0], j = d.createElement(s); j.async = true; - j.src = 'build/rocketchat-livechat.min.js?_=' + Math.random(); + j.src = 'dist/rocketchat-livechat.min.js?_=' + Math.random(); h.parentNode.insertBefore(j, h); })(window, document, 'script', 'http://localhost:8080'); RocketChat(function() {