diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md
index c5162f2c7e1ac..c967c8f47c3f8 100644
--- a/apps/meteor/CHANGELOG.md
+++ b/apps/meteor/CHANGELOG.md
@@ -1,5 +1,50 @@
# @rocket.chat/meteor
+## 7.7.2
+
+### Patch Changes
+
+- Bump @rocket.chat/meteor version.
+
+- Bump @rocket.chat/meteor version.
+
+- ([#36323](https://github.com/RocketChat/Rocket.Chat/pull/36323) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes an issue that was causing ddp-streamer process to break if the communication with presence service was interrupted for any reason.
+
+- ([#36250](https://github.com/RocketChat/Rocket.Chat/pull/36250) by [@dionisio-bot](https://github.com/dionisio-bot)) fix: Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates)
+
+- ([#36270](https://github.com/RocketChat/Rocket.Chat/pull/36270) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes an issue that caused the queue worker to stop processing if something failed when checking MAC limits or while fetching the list of queues
+
+- ([#36298](https://github.com/RocketChat/Rocket.Chat/pull/36298) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes an issue that prevented the action of removing an agent when editing a department to work.
+
+- Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:
+
+ - @rocket.chat/rest-typings@7.7.2
+ - @rocket.chat/omnichannel-services@0.3.23
+ - @rocket.chat/presence@0.2.26
+ - @rocket.chat/api-client@0.2.26
+ - @rocket.chat/core-services@0.9.5
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/ui-contexts@19.0.2
+ - @rocket.chat/network-broker@0.2.5
+ - @rocket.chat/cron@0.1.26
+ - @rocket.chat/instance-status@0.1.26
+ - @rocket.chat/ui-theming@0.4.3
+ - @rocket.chat/fuselage-ui-kit@19.0.2
+ - @rocket.chat/gazzodown@19.0.2
+ - @rocket.chat/ui-avatar@15.0.2
+ - @rocket.chat/ui-client@19.0.2
+ - @rocket.chat/ui-video-conf@19.0.2
+ - @rocket.chat/ui-voip@9.0.2
+ - @rocket.chat/web-ui-registration@19.0.2
+ - @rocket.chat/core-typings@7.7.2
+ - @rocket.chat/license@1.0.17
+ - @rocket.chat/pdf-worker@0.3.5
+ - @rocket.chat/apps@0.5.5
+ - @rocket.chat/freeswitch@1.2.13
+ - @rocket.chat/model-typings@1.6.5
+ - @rocket.chat/server-cloud-communication@0.0.2
+
+
## 7.7.1
### Patch Changes
diff --git a/apps/meteor/app/livechat/server/lib/departmentsLib.ts b/apps/meteor/app/livechat/server/lib/departmentsLib.ts
index d0fe436a5231e..31c891c23e5aa 100644
--- a/apps/meteor/app/livechat/server/lib/departmentsLib.ts
+++ b/apps/meteor/app/livechat/server/lib/departmentsLib.ts
@@ -185,7 +185,7 @@ export async function saveDepartmentAgents(
departmentAgents: {
upsert?: (Pick & {
count?: number;
- sort?: number;
+ order?: number;
})[];
remove?: Pick[];
},
diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info
index be3a5538e0285..8d1cc31202185 100644
--- a/apps/meteor/app/utils/rocketchat.info
+++ b/apps/meteor/app/utils/rocketchat.info
@@ -1,3 +1,3 @@
{
- "version": "7.7.1"
+ "version": "7.7.2"
}
diff --git a/apps/meteor/client/views/omnichannel/departments/utils/formatAgentListPayload.ts b/apps/meteor/client/views/omnichannel/departments/utils/formatAgentListPayload.ts
index 267f0c68257a6..c498fce57d0f8 100644
--- a/apps/meteor/client/views/omnichannel/departments/utils/formatAgentListPayload.ts
+++ b/apps/meteor/client/views/omnichannel/departments/utils/formatAgentListPayload.ts
@@ -1,20 +1,20 @@
import type { IDepartmentAgent } from '../definitions';
export const formatAgentListPayload = (oldAgentList: IDepartmentAgent[], newAgentList: IDepartmentAgent[]) => {
- const upsert: IDepartmentAgent[] = [];
- const remove: IDepartmentAgent[] = [];
+ const upsert: Pick[] = [];
+ const remove: Pick[] = [];
for (const agent of newAgentList) {
const initialAgent = agent._id ? oldAgentList.find((initialAgent) => initialAgent._id === agent._id) : undefined;
if (!initialAgent || agent.count !== initialAgent.count || agent.order !== initialAgent.order) {
- upsert.push(agent);
+ upsert.push({ agentId: agent.agentId, username: agent.username, count: agent.count, order: agent.order });
}
}
for (const initialAgent of oldAgentList) {
if (!newAgentList.some((agent) => initialAgent._id === agent._id)) {
- remove.push(initialAgent);
+ remove.push({ agentId: initialAgent.agentId, username: initialAgent.username });
}
}
diff --git a/apps/meteor/ee/server/services/CHANGELOG.md b/apps/meteor/ee/server/services/CHANGELOG.md
index cb18a91eb0456..5f3655147c891 100644
--- a/apps/meteor/ee/server/services/CHANGELOG.md
+++ b/apps/meteor/ee/server/services/CHANGELOG.md
@@ -1,5 +1,19 @@
# rocketchat-services
+## 2.0.17
+
+### Patch Changes
+
+- Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:
+
+ - @rocket.chat/rest-typings@7.7.2
+ - @rocket.chat/core-services@0.9.5
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/network-broker@0.2.5
+ - @rocket.chat/core-typings@7.7.2
+ - @rocket.chat/model-typings@1.6.5
+
+
## 2.0.16
### Patch Changes
diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json
index 7f0f11b676dfd..85ab90f491172 100644
--- a/apps/meteor/ee/server/services/package.json
+++ b/apps/meteor/ee/server/services/package.json
@@ -1,7 +1,7 @@
{
"name": "rocketchat-services",
"private": true,
- "version": "2.0.16",
+ "version": "2.0.17",
"description": "Rocket.Chat Authorization service",
"main": "index.js",
"scripts": {
diff --git a/apps/meteor/package.json b/apps/meteor/package.json
index cd9a34ec3d12b..a15b292dfc3fd 100644
--- a/apps/meteor/package.json
+++ b/apps/meteor/package.json
@@ -1,7 +1,7 @@
{
"name": "@rocket.chat/meteor",
"description": "The Ultimate Open Source WebChat Platform",
- "version": "7.7.1",
+ "version": "7.7.2",
"private": true,
"type": "commonjs",
"author": {
diff --git a/apps/meteor/server/publications/room/index.ts b/apps/meteor/server/publications/room/index.ts
index dcb9c741f2376..5a457daa937e3 100644
--- a/apps/meteor/server/publications/room/index.ts
+++ b/apps/meteor/server/publications/room/index.ts
@@ -58,11 +58,15 @@ Meteor.methods({
}
const userId = Meteor.userId();
-
- if (!userId && settings.get('Accounts_AllowAnonymousRead') === false) {
- throw new Meteor.Error('error-invalid-user', 'Invalid user', {
- method: 'getRoomByTypeAndName',
- });
+ const isAnonymous = !userId;
+
+ if (isAnonymous) {
+ const allowAnon = settings.get('Accounts_AllowAnonymousRead');
+ if (!allowAnon || type !== 'c') {
+ throw new Meteor.Error('error-invalid-user', 'Invalid user', {
+ method: 'getRoomByTypeAndName',
+ });
+ }
}
const roomFind = roomCoordinator.getRoomFind(type);
diff --git a/apps/meteor/server/services/omnichannel/queue.ts b/apps/meteor/server/services/omnichannel/queue.ts
index 31a159492cfa9..7e64b90679994 100644
--- a/apps/meteor/server/services/omnichannel/queue.ts
+++ b/apps/meteor/server/services/omnichannel/queue.ts
@@ -27,6 +27,8 @@ export class OmnichannelQueue implements IOmnichannelQueue {
private running = false;
+ private errorDelay = 10 * 1000; // 10 seconds
+
private delay() {
const timeout = settings.get('Omnichannel_queue_delay_timeout') ?? 5;
return timeout < 1 ? DEFAULT_RACE_TIMEOUT : timeout * 1000;
@@ -79,28 +81,38 @@ export class OmnichannelQueue implements IOmnichannelQueue {
}
private async execute() {
- if (!this.running) {
- queueLogger.debug('Queue stopped. Cannot execute');
- return;
- }
+ try {
+ if (!this.running) {
+ queueLogger.debug('Queue stopped. Cannot execute');
+ return;
+ }
- if (await License.shouldPreventAction('monthlyActiveContacts', 1)) {
- queueLogger.debug('MAC limit reached. Queue wont execute');
- this.running = false;
- return;
- }
+ if (await License.shouldPreventAction('monthlyActiveContacts', 1)) {
+ queueLogger.debug('MAC limit reached. Queue wont execute');
+ this.running = false;
+ return;
+ }
+
+ // We still go 1 by 1, but we go with every queue every cycle instead of just 1 queue per cycle
+ // And we get tracing :)
+ const queues = await this.getActiveQueues();
+ for await (const queue of queues) {
+ await tracerSpan(
+ 'omnichannel.queue',
+ { attributes: { workerTime: new Date().toISOString(), queue: queue || 'Public' }, root: true },
+ () => this.checkQueue(queue),
+ );
+ }
- // We still go 1 by 1, but we go with every queue every cycle instead of just 1 queue per cycle
- // And we get tracing :)
- const queues = await this.getActiveQueues();
- for await (const queue of queues) {
- await tracerSpan(
- 'omnichannel.queue',
- { attributes: { workerTime: new Date().toISOString(), queue: queue || 'Public' }, root: true },
- () => this.checkQueue(queue),
- );
+ this.scheduleExecution();
+ } catch (e) {
+ queueLogger.error({
+ msg: 'Queue Worker Error. Rescheduling with extra delay',
+ extraDelay: this.errorDelay,
+ err: e,
+ });
+ this.scheduleExecution(this.errorDelay);
}
- this.scheduleExecution();
}
private async checkQueue(queue: string | null) {
@@ -136,15 +148,18 @@ export class OmnichannelQueue implements IOmnichannelQueue {
}
}
- private scheduleExecution(): void {
+ private scheduleExecution(extraDelay?: number): void {
if (this.timeoutHandler !== null) {
return;
}
- this.timeoutHandler = setTimeout(() => {
- this.timeoutHandler = null;
- return this.execute();
- }, this.delay());
+ this.timeoutHandler = setTimeout(
+ () => {
+ this.timeoutHandler = null;
+ return this.execute();
+ },
+ this.delay() + (extraDelay || 0),
+ );
}
async shouldStart() {
diff --git a/apps/meteor/tests/end-to-end/api/livechat/10-departments.ts b/apps/meteor/tests/end-to-end/api/livechat/10-departments.ts
index 99ca5591b25a4..f219a7a4f0037 100644
--- a/apps/meteor/tests/end-to-end/api/livechat/10-departments.ts
+++ b/apps/meteor/tests/end-to-end/api/livechat/10-departments.ts
@@ -911,6 +911,30 @@ import { IS_EE } from '../../../e2e/config/constants';
.send({ upsert: [{ agentId: agent._id, username: agent.username, name: agent.name }], remove: [] })
.expect(200);
expect(res.body).to.have.property('success', true);
+ });
+ it('should successfully remove an agent from a department', async () => {
+ const [dep, agent] = await Promise.all([createDepartment(), createAgent()]);
+ const res = await request
+ .post(api(`livechat/department/${dep._id}/agents`))
+ .set(credentials)
+ // UI sends the whole agent object, but API only needs agentId and username
+ .send({
+ remove: [
+ {
+ agentId: agent._id,
+ username: agent.username,
+ name: agent.name,
+ count: 0,
+ order: 0,
+ departmentId: 'afdsfads',
+ _id: 'afsdfadsfaf',
+ _updatedAt: new Date(),
+ },
+ ],
+ upsert: [],
+ })
+ .expect(200);
+ expect(res.body).to.have.property('success', true);
await deleteDepartment(dep._id);
});
});
diff --git a/apps/meteor/tests/end-to-end/api/methods.ts b/apps/meteor/tests/end-to-end/api/methods.ts
index 0d6651f74ba9b..6630be90104f7 100644
--- a/apps/meteor/tests/end-to-end/api/methods.ts
+++ b/apps/meteor/tests/end-to-end/api/methods.ts
@@ -2575,6 +2575,7 @@ describe('Meteor.methods', () => {
let testUserCredentials: Credentials;
let dmId: IRoom['_id'];
let room: IRoom;
+ let privateRoom: IRoom;
before(async () => {
testUser = await createUser();
@@ -2613,14 +2614,49 @@ describe('Meteor.methods', () => {
});
});
- after(() =>
- Promise.all([
+ before(async () => {
+ privateRoom = (
+ await createRoom({
+ type: 'p',
+ name: `private.test.${Date.now()}-${Math.random()}`,
+ })
+ ).body.group;
+ });
+
+ after(async () => {
+ await Promise.all([
deleteRoom({ type: 'd', roomId: dmId }),
deleteRoom({ type: 'c', roomId: room._id }),
+ deleteRoom({ type: 'p', roomId: privateRoom._id }),
deleteUser(testUser),
deleteUser(testUser2),
- ]),
- );
+ updateSetting('Accounts_AllowAnonymousRead', false),
+ ]);
+ });
+
+ it('should throw error when anonymous user tries to read private channel with anonymous read enabled', async () => {
+ await updateSetting('Accounts_AllowAnonymousRead', true);
+
+ const payload = {
+ message: JSON.stringify({
+ msg: 'method',
+ id: '2',
+ method: 'getRoomByTypeAndName',
+ params: ['p', privateRoom.name],
+ }),
+ };
+
+ const res = await request.post('/api/v1/method.callAnon/getRoomByTypeAndName').set('Content-Type', 'application/json').send(payload);
+
+ expect(res.body).to.have.property('message');
+ const parsedMessage = JSON.parse(res.body.message);
+
+ expect(parsedMessage).to.have.property('error');
+ expect(parsedMessage.error).to.have.property('error');
+ expect(parsedMessage.error.error).to.equal('error-invalid-user');
+
+ await updateSetting('Accounts_AllowAnonymousRead', false);
+ });
it("should throw an error if the user isn't logged in", (done) => {
void request
diff --git a/apps/uikit-playground/CHANGELOG.md b/apps/uikit-playground/CHANGELOG.md
index b3728bd179e83..767a53be39e5c 100644
--- a/apps/uikit-playground/CHANGELOG.md
+++ b/apps/uikit-playground/CHANGELOG.md
@@ -1,5 +1,17 @@
# @rocket.chat/uikit-playground
+## 0.6.17
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-contexts@19.0.2
+ - @rocket.chat/fuselage-ui-kit@19.0.2
+ - @rocket.chat/ui-avatar@15.0.2
+ - @rocket.chat/core-typings@7.7.2
+
+
## 0.6.16
### Patch Changes
diff --git a/apps/uikit-playground/package.json b/apps/uikit-playground/package.json
index 86e0ff73546e3..0d604906326a1 100644
--- a/apps/uikit-playground/package.json
+++ b/apps/uikit-playground/package.json
@@ -1,7 +1,7 @@
{
"name": "@rocket.chat/uikit-playground",
"private": true,
- "version": "0.6.16",
+ "version": "0.6.17",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/ee/apps/account-service/CHANGELOG.md b/ee/apps/account-service/CHANGELOG.md
index 1c8bc5457b237..3628873063e03 100644
--- a/ee/apps/account-service/CHANGELOG.md
+++ b/ee/apps/account-service/CHANGELOG.md
@@ -1,5 +1,19 @@
# @rocket.chat/account-service
+## 0.4.26
+
+### Patch Changes
+
+- Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:
+
+ - @rocket.chat/rest-typings@7.7.2
+ - @rocket.chat/core-services@0.9.5
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/network-broker@0.2.5
+ - @rocket.chat/core-typings@7.7.2
+ - @rocket.chat/model-typings@1.6.5
+
+
## 0.4.25
### Patch Changes
diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json
index 210b8aa83d45a..934fcc5a99e69 100644
--- a/ee/apps/account-service/package.json
+++ b/ee/apps/account-service/package.json
@@ -1,7 +1,7 @@
{
"name": "@rocket.chat/account-service",
"private": true,
- "version": "0.4.25",
+ "version": "0.4.26",
"description": "Rocket.Chat Account service",
"scripts": {
"build": "tsc -p tsconfig.json",
diff --git a/ee/apps/authorization-service/CHANGELOG.md b/ee/apps/authorization-service/CHANGELOG.md
index ee11e756aa56c..af1be18a6dded 100644
--- a/ee/apps/authorization-service/CHANGELOG.md
+++ b/ee/apps/authorization-service/CHANGELOG.md
@@ -1,5 +1,19 @@
# @rocket.chat/authorization-service
+## 0.4.26
+
+### Patch Changes
+
+- Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:
+
+ - @rocket.chat/rest-typings@7.7.2
+ - @rocket.chat/core-services@0.9.5
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/network-broker@0.2.5
+ - @rocket.chat/core-typings@7.7.2
+ - @rocket.chat/model-typings@1.6.5
+
+
## 0.4.25
### Patch Changes
diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json
index 9dabfffc565fc..00c5ee60711f9 100644
--- a/ee/apps/authorization-service/package.json
+++ b/ee/apps/authorization-service/package.json
@@ -1,7 +1,7 @@
{
"name": "@rocket.chat/authorization-service",
"private": true,
- "version": "0.4.25",
+ "version": "0.4.26",
"description": "Rocket.Chat Authorization service",
"scripts": {
"build": "tsc -p tsconfig.json",
diff --git a/ee/apps/ddp-streamer/CHANGELOG.md b/ee/apps/ddp-streamer/CHANGELOG.md
index e3ec170cbf1f6..1541aaf739c77 100644
--- a/ee/apps/ddp-streamer/CHANGELOG.md
+++ b/ee/apps/ddp-streamer/CHANGELOG.md
@@ -1,5 +1,22 @@
# @rocket.chat/ddp-streamer
+## 0.3.26
+
+### Patch Changes
+
+- ([#36323](https://github.com/RocketChat/Rocket.Chat/pull/36323) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes an issue that was causing ddp-streamer process to break if the communication with presence service was interrupted for any reason.
+
+- Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:
+
+ - @rocket.chat/rest-typings@7.7.2
+ - @rocket.chat/core-services@0.9.5
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/network-broker@0.2.5
+ - @rocket.chat/instance-status@0.1.26
+ - @rocket.chat/core-typings@7.7.2
+ - @rocket.chat/model-typings@1.6.5
+
+
## 0.3.25
### Patch Changes
diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json
index e4967a2cb7c4c..e9b78d0c3f183 100644
--- a/ee/apps/ddp-streamer/package.json
+++ b/ee/apps/ddp-streamer/package.json
@@ -1,7 +1,7 @@
{
"name": "@rocket.chat/ddp-streamer",
"private": true,
- "version": "0.3.25",
+ "version": "0.3.26",
"description": "Rocket.Chat DDP-Streamer service",
"scripts": {
"build": "tsc -p tsconfig.json",
diff --git a/ee/apps/ddp-streamer/src/service.ts b/ee/apps/ddp-streamer/src/service.ts
index e0e430c7eebbf..ab5c8108712ee 100755
--- a/ee/apps/ddp-streamer/src/service.ts
+++ b/ee/apps/ddp-streamer/src/service.ts
@@ -32,3 +32,39 @@ import { startTracing } from '@rocket.chat/tracing';
await api.start();
})();
+
+/**
+ * If some promise is rejected and doesn't have a catch (unhandledRejection) it may cause the process to exit.
+ *
+ * Since unhandled rejections are deprecated in NodeJS:
+ * (node:83382) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections
+ * that are not handled will terminate the Node.js process with a non-zero exit code.
+ * we will start respecting this and exit the process to prevent these kind of problems.
+ */
+
+process.on('unhandledRejection', (error) => {
+ console.error('=== UnHandledPromiseRejection ===');
+ console.error(error);
+ console.error('---------------------------------');
+ console.error(
+ 'Setting EXIT_UNHANDLEDPROMISEREJECTION will cause the process to exit allowing your service to automatically restart the process',
+ );
+ console.error('Future node.js versions will automatically exit the process');
+ console.error('=================================');
+
+ if (process.env.TEST_MODE || process.env.NODE_ENV === 'development' || process.env.EXIT_UNHANDLEDPROMISEREJECTION) {
+ process.exit(1);
+ }
+});
+
+process.on('uncaughtException', async (error) => {
+ console.error('=== UnCaughtException ===');
+ console.error(error);
+ console.error('-------------------------');
+ console.error('Errors like this can cause oplog processing errors.');
+ console.error('===========================');
+
+ if (process.env.TEST_MODE || process.env.NODE_ENV === 'development' || process.env.EXIT_UNHANDLEDPROMISEREJECTION) {
+ process.exit(1);
+ }
+});
diff --git a/ee/apps/omnichannel-transcript/CHANGELOG.md b/ee/apps/omnichannel-transcript/CHANGELOG.md
index 8b1d9cd90ea4c..da73076c8e24c 100644
--- a/ee/apps/omnichannel-transcript/CHANGELOG.md
+++ b/ee/apps/omnichannel-transcript/CHANGELOG.md
@@ -1,5 +1,20 @@
# @rocket.chat/omnichannel-transcript
+## 0.4.26
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/omnichannel-services@0.3.23
+ - @rocket.chat/core-services@0.9.5
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/network-broker@0.2.5
+ - @rocket.chat/core-typings@7.7.2
+ - @rocket.chat/pdf-worker@0.3.5
+ - @rocket.chat/model-typings@1.6.5
+
+
## 0.4.25
### Patch Changes
diff --git a/ee/apps/omnichannel-transcript/package.json b/ee/apps/omnichannel-transcript/package.json
index 58b688236334c..768a028174b06 100644
--- a/ee/apps/omnichannel-transcript/package.json
+++ b/ee/apps/omnichannel-transcript/package.json
@@ -1,7 +1,7 @@
{
"name": "@rocket.chat/omnichannel-transcript",
"private": true,
- "version": "0.4.25",
+ "version": "0.4.26",
"description": "Rocket.Chat service",
"scripts": {
"build": "tsc -p tsconfig.json",
diff --git a/ee/apps/presence-service/CHANGELOG.md b/ee/apps/presence-service/CHANGELOG.md
index 53fe11263e687..a99f43d410ab3 100644
--- a/ee/apps/presence-service/CHANGELOG.md
+++ b/ee/apps/presence-service/CHANGELOG.md
@@ -1,5 +1,19 @@
# @rocket.chat/presence-service
+## 0.4.26
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/presence@0.2.26
+ - @rocket.chat/core-services@0.9.5
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/network-broker@0.2.5
+ - @rocket.chat/core-typings@7.7.2
+ - @rocket.chat/model-typings@1.6.5
+
+
## 0.4.25
### Patch Changes
diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json
index 14eebb0982597..c051d5488c400 100644
--- a/ee/apps/presence-service/package.json
+++ b/ee/apps/presence-service/package.json
@@ -1,7 +1,7 @@
{
"name": "@rocket.chat/presence-service",
"private": true,
- "version": "0.4.25",
+ "version": "0.4.26",
"description": "Rocket.Chat Presence service",
"scripts": {
"build": "tsc -p tsconfig.json",
diff --git a/ee/apps/queue-worker/CHANGELOG.md b/ee/apps/queue-worker/CHANGELOG.md
index 158d7980b8de2..9b4991d09bdd2 100644
--- a/ee/apps/queue-worker/CHANGELOG.md
+++ b/ee/apps/queue-worker/CHANGELOG.md
@@ -1,5 +1,19 @@
# @rocket.chat/queue-worker
+## 0.4.26
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/omnichannel-services@0.3.23
+ - @rocket.chat/core-services@0.9.5
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/network-broker@0.2.5
+ - @rocket.chat/core-typings@7.7.2
+ - @rocket.chat/model-typings@1.6.5
+
+
## 0.4.25
### Patch Changes
diff --git a/ee/apps/queue-worker/package.json b/ee/apps/queue-worker/package.json
index 0cd1e7730b8e4..2d918d3c84f1e 100644
--- a/ee/apps/queue-worker/package.json
+++ b/ee/apps/queue-worker/package.json
@@ -1,7 +1,7 @@
{
"name": "@rocket.chat/queue-worker",
"private": true,
- "version": "0.4.25",
+ "version": "0.4.26",
"description": "Rocket.Chat service",
"scripts": {
"build": "tsc -p tsconfig.json",
diff --git a/ee/apps/stream-hub-service/CHANGELOG.md b/ee/apps/stream-hub-service/CHANGELOG.md
index 9db5ab551eebc..23c788e21a094 100644
--- a/ee/apps/stream-hub-service/CHANGELOG.md
+++ b/ee/apps/stream-hub-service/CHANGELOG.md
@@ -1,5 +1,18 @@
# @rocket.chat/stream-hub-service
+## 0.4.26
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-services@0.9.5
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/network-broker@0.2.5
+ - @rocket.chat/core-typings@7.7.2
+ - @rocket.chat/model-typings@1.6.5
+
+
## 0.4.25
### Patch Changes
diff --git a/ee/apps/stream-hub-service/package.json b/ee/apps/stream-hub-service/package.json
index ab87ff3f90c18..47c2557f3e855 100644
--- a/ee/apps/stream-hub-service/package.json
+++ b/ee/apps/stream-hub-service/package.json
@@ -1,7 +1,7 @@
{
"name": "@rocket.chat/stream-hub-service",
"private": true,
- "version": "0.4.25",
+ "version": "0.4.26",
"description": "Rocket.Chat Stream Hub service",
"scripts": {
"build": "tsc -p tsconfig.json",
diff --git a/ee/packages/license/CHANGELOG.md b/ee/packages/license/CHANGELOG.md
index ceb9c2d23d79c..cf8198603ec6f 100644
--- a/ee/packages/license/CHANGELOG.md
+++ b/ee/packages/license/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/license
+## 1.0.17
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@7.7.2
+
+
## 1.0.16
### Patch Changes
diff --git a/ee/packages/license/package.json b/ee/packages/license/package.json
index d5c9e8d9129fe..f5778a73b5294 100644
--- a/ee/packages/license/package.json
+++ b/ee/packages/license/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/license",
- "version": "1.0.16",
+ "version": "1.0.17",
"private": true,
"devDependencies": {
"@rocket.chat/jest-presets": "workspace:~",
diff --git a/ee/packages/network-broker/CHANGELOG.md b/ee/packages/network-broker/CHANGELOG.md
index 6c8de5fcc453d..4492eeea79d37 100644
--- a/ee/packages/network-broker/CHANGELOG.md
+++ b/ee/packages/network-broker/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/network-broker
+## 0.2.5
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-services@0.9.5
+
+
## 0.2.4
### Patch Changes
diff --git a/ee/packages/network-broker/package.json b/ee/packages/network-broker/package.json
index d92d657684cef..87405179eb16a 100644
--- a/ee/packages/network-broker/package.json
+++ b/ee/packages/network-broker/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/network-broker",
- "version": "0.2.4",
+ "version": "0.2.5",
"private": true,
"devDependencies": {
"@rocket.chat/eslint-config": "workspace:^",
diff --git a/ee/packages/omnichannel-services/CHANGELOG.md b/ee/packages/omnichannel-services/CHANGELOG.md
index c5decde182751..2cbfe4c7a7fcb 100644
--- a/ee/packages/omnichannel-services/CHANGELOG.md
+++ b/ee/packages/omnichannel-services/CHANGELOG.md
@@ -1,5 +1,19 @@
# @rocket.chat/omnichannel-services
+## 0.3.23
+
+### Patch Changes
+
+- Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:
+
+ - @rocket.chat/rest-typings@7.7.2
+ - @rocket.chat/core-services@0.9.5
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/core-typings@7.7.2
+ - @rocket.chat/pdf-worker@0.3.5
+ - @rocket.chat/model-typings@1.6.5
+
+
## 0.3.22
### Patch Changes
diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json
index ea24a9872acf4..0a721c28aac96 100644
--- a/ee/packages/omnichannel-services/package.json
+++ b/ee/packages/omnichannel-services/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/omnichannel-services",
- "version": "0.3.22",
+ "version": "0.3.23",
"private": true,
"devDependencies": {
"@rocket.chat/eslint-config": "workspace:^",
diff --git a/ee/packages/pdf-worker/CHANGELOG.md b/ee/packages/pdf-worker/CHANGELOG.md
index 6d832a29e7427..f3e1ddcc69c6b 100644
--- a/ee/packages/pdf-worker/CHANGELOG.md
+++ b/ee/packages/pdf-worker/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/pdf-worker
+## 0.3.5
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@7.7.2
+
+
## 0.3.4
### Patch Changes
diff --git a/ee/packages/pdf-worker/package.json b/ee/packages/pdf-worker/package.json
index 8dced6e6cc7c7..3e1252690f8ea 100644
--- a/ee/packages/pdf-worker/package.json
+++ b/ee/packages/pdf-worker/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/pdf-worker",
- "version": "0.3.4",
+ "version": "0.3.5",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/ee/packages/presence/CHANGELOG.md b/ee/packages/presence/CHANGELOG.md
index 078988885d6b4..8c3e4feaa6329 100644
--- a/ee/packages/presence/CHANGELOG.md
+++ b/ee/packages/presence/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/presence
+## 0.2.26
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-services@0.9.5
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/core-typings@7.7.2
+
+
## 0.2.25
### Patch Changes
diff --git a/ee/packages/presence/package.json b/ee/packages/presence/package.json
index 80380becacceb..4191630dfcbc9 100644
--- a/ee/packages/presence/package.json
+++ b/ee/packages/presence/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/presence",
- "version": "0.2.25",
+ "version": "0.2.26",
"private": true,
"devDependencies": {
"@babel/core": "~7.26.0",
diff --git a/package.json b/package.json
index 98a22c0ca3408..5e92982315eff 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "rocket.chat",
- "version": "7.7.1",
+ "version": "7.7.2",
"description": "Rocket.Chat Monorepo",
"main": "index.js",
"private": true,
diff --git a/packages/api-client/CHANGELOG.md b/packages/api-client/CHANGELOG.md
index ac10730c51c96..22a6fd6a52169 100644
--- a/packages/api-client/CHANGELOG.md
+++ b/packages/api-client/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/api-client
+## 0.2.26
+
+### Patch Changes
+
+- Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:
+
+ - @rocket.chat/rest-typings@7.7.2
+ - @rocket.chat/core-typings@7.7.2
+
+
## 0.2.25
### Patch Changes
diff --git a/packages/api-client/package.json b/packages/api-client/package.json
index ff6af2afb17e4..b692a6037352e 100644
--- a/packages/api-client/package.json
+++ b/packages/api-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/api-client",
- "version": "0.2.25",
+ "version": "0.2.26",
"devDependencies": {
"@rocket.chat/jest-presets": "workspace:~",
"@types/jest": "~29.5.14",
diff --git a/packages/apps/CHANGELOG.md b/packages/apps/CHANGELOG.md
index a88c6df247f23..8dd27ddb7deba 100644
--- a/packages/apps/CHANGELOG.md
+++ b/packages/apps/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/apps
+## 0.5.5
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@7.7.2
+ - @rocket.chat/model-typings@1.6.5
+
+
## 0.5.4
### Patch Changes
diff --git a/packages/apps/package.json b/packages/apps/package.json
index ec6f0789ef70e..d68e9ae5e8b69 100644
--- a/packages/apps/package.json
+++ b/packages/apps/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/apps",
- "version": "0.5.4",
+ "version": "0.5.5",
"private": true,
"devDependencies": {
"eslint": "~8.45.0",
diff --git a/packages/core-services/CHANGELOG.md b/packages/core-services/CHANGELOG.md
index 7f85c417a99be..c963a44a9c94f 100644
--- a/packages/core-services/CHANGELOG.md
+++ b/packages/core-services/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/core-services
+## 0.9.5
+
+### Patch Changes
+
+- Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:
+
+ - @rocket.chat/rest-typings@7.7.2
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/core-typings@7.7.2
+
+
## 0.9.4
### Patch Changes
diff --git a/packages/core-services/package.json b/packages/core-services/package.json
index 8351b522fca6a..9171f8a513d8a 100644
--- a/packages/core-services/package.json
+++ b/packages/core-services/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/core-services",
- "version": "0.9.4",
+ "version": "0.9.5",
"private": true,
"devDependencies": {
"@babel/core": "~7.26.0",
diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md
index 6ace917ef2657..34f991712d594 100644
--- a/packages/core-typings/CHANGELOG.md
+++ b/packages/core-typings/CHANGELOG.md
@@ -1,5 +1,7 @@
# @rocket.chat/core-typings
+## 7.7.2
+
## 7.7.1
## 7.7.0
diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json
index 67c7985469b74..e3f926d5afe10 100644
--- a/packages/core-typings/package.json
+++ b/packages/core-typings/package.json
@@ -2,7 +2,7 @@
"$schema": "https://json.schemastore.org/package",
"name": "@rocket.chat/core-typings",
"private": true,
- "version": "7.7.1",
+ "version": "7.7.2",
"devDependencies": {
"@rocket.chat/apps-engine": "workspace:^",
"@rocket.chat/eslint-config": "workspace:^",
diff --git a/packages/cron/CHANGELOG.md b/packages/cron/CHANGELOG.md
index 150d387f1979f..8261fdf0c6f18 100644
--- a/packages/cron/CHANGELOG.md
+++ b/packages/cron/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/cron
+## 0.1.26
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/models@1.5.5
+ - @rocket.chat/core-typings@7.7.2
+
+
## 0.1.25
### Patch Changes
diff --git a/packages/cron/package.json b/packages/cron/package.json
index b18d5e51d93cb..4dafccf030434 100644
--- a/packages/cron/package.json
+++ b/packages/cron/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/cron",
- "version": "0.1.25",
+ "version": "0.1.26",
"private": true,
"devDependencies": {
"eslint": "~8.45.0",
diff --git a/packages/ddp-client/CHANGELOG.md b/packages/ddp-client/CHANGELOG.md
index 79be928ad6fb6..92ba849190804 100644
--- a/packages/ddp-client/CHANGELOG.md
+++ b/packages/ddp-client/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/ddp-client
+## 0.3.26
+
+### Patch Changes
+
+- Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:
+
+ - @rocket.chat/rest-typings@7.7.2
+ - @rocket.chat/api-client@0.2.26
+ - @rocket.chat/core-typings@7.7.2
+
+
## 0.3.25
### Patch Changes
diff --git a/packages/ddp-client/package.json b/packages/ddp-client/package.json
index b828807ea93cc..8f95996992ce5 100644
--- a/packages/ddp-client/package.json
+++ b/packages/ddp-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ddp-client",
- "version": "0.3.25",
+ "version": "0.3.26",
"devDependencies": {
"@rocket.chat/jest-presets": "workspace:~",
"@types/jest": "~29.5.14",
diff --git a/packages/freeswitch/CHANGELOG.md b/packages/freeswitch/CHANGELOG.md
index 9413d546e53dc..a0c8bded69f7f 100644
--- a/packages/freeswitch/CHANGELOG.md
+++ b/packages/freeswitch/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/freeswitch
+## 1.2.13
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@7.7.2
+
+
## 1.2.12
### Patch Changes
diff --git a/packages/freeswitch/package.json b/packages/freeswitch/package.json
index 7e200b3e3c950..544f57dad95f2 100644
--- a/packages/freeswitch/package.json
+++ b/packages/freeswitch/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/freeswitch",
- "version": "1.2.12",
+ "version": "1.2.13",
"private": true,
"devDependencies": {
"@rocket.chat/jest-presets": "workspace:~",
diff --git a/packages/fuselage-ui-kit/CHANGELOG.md b/packages/fuselage-ui-kit/CHANGELOG.md
index ed5c1866ecac4..fe255baf282d2 100644
--- a/packages/fuselage-ui-kit/CHANGELOG.md
+++ b/packages/fuselage-ui-kit/CHANGELOG.md
@@ -1,5 +1,18 @@
# Change Log
+## 19.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-contexts@19.0.2
+ - @rocket.chat/gazzodown@19.0.2
+ - @rocket.chat/ui-avatar@15.0.2
+ - @rocket.chat/ui-video-conf@19.0.2
+ - @rocket.chat/core-typings@7.7.2
+
+
## 19.0.1
### Patch Changes
diff --git a/packages/fuselage-ui-kit/package.json b/packages/fuselage-ui-kit/package.json
index 7078a4d6b8358..b32b51062f60f 100644
--- a/packages/fuselage-ui-kit/package.json
+++ b/packages/fuselage-ui-kit/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/fuselage-ui-kit",
- "version": "19.0.1",
+ "version": "19.0.2",
"private": true,
"description": "UiKit elements for Rocket.Chat Apps built under Fuselage design system",
"homepage": "https://rocketchat.github.io/Rocket.Chat.Fuselage/",
diff --git a/packages/gazzodown/CHANGELOG.md b/packages/gazzodown/CHANGELOG.md
index 5c408b3bbaff0..a7cde03e8befa 100644
--- a/packages/gazzodown/CHANGELOG.md
+++ b/packages/gazzodown/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/gazzodown
+## 19.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-contexts@19.0.2
+ - @rocket.chat/ui-client@19.0.2
+ - @rocket.chat/core-typings@7.7.2
+
+
## 19.0.1
### Patch Changes
diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json
index fd433a7afa95c..b98130c566843 100644
--- a/packages/gazzodown/package.json
+++ b/packages/gazzodown/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/gazzodown",
- "version": "19.0.1",
+ "version": "19.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/instance-status/CHANGELOG.md b/packages/instance-status/CHANGELOG.md
index d474103fa11b8..65aea5377acc2 100644
--- a/packages/instance-status/CHANGELOG.md
+++ b/packages/instance-status/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/instance-status
+## 0.1.26
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/models@1.5.5
+
+
## 0.1.25
### Patch Changes
diff --git a/packages/instance-status/package.json b/packages/instance-status/package.json
index a488f810d3557..9fc974b2a6785 100644
--- a/packages/instance-status/package.json
+++ b/packages/instance-status/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/instance-status",
- "version": "0.1.25",
+ "version": "0.1.26",
"private": true,
"devDependencies": {
"@rocket.chat/eslint-config": "workspace:^",
diff --git a/packages/livechat/CHANGELOG.md b/packages/livechat/CHANGELOG.md
index 01ba5047e01ee..b4f933eb56c74 100644
--- a/packages/livechat/CHANGELOG.md
+++ b/packages/livechat/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/livechat Change Log
+## 1.22.13
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/gazzodown@19.0.2
+
+
## 1.22.12
### Patch Changes
diff --git a/packages/livechat/package.json b/packages/livechat/package.json
index 5adc818301fd9..b426813997337 100644
--- a/packages/livechat/package.json
+++ b/packages/livechat/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/livechat",
- "version": "1.22.12",
+ "version": "1.22.13",
"files": [
"/build"
],
diff --git a/packages/livechat/src/components/App/App.tsx b/packages/livechat/src/components/App/App.tsx
index ba3e941c27558..e0398b3a08510 100644
--- a/packages/livechat/src/components/App/App.tsx
+++ b/packages/livechat/src/components/App/App.tsx
@@ -140,11 +140,14 @@ export class App extends Component {
iframe: { visible },
config: { theme },
dispatch,
+ undocked,
} = this.props;
- parentCall(minimized ? 'minimizeWindow' : 'restoreWindow');
- parentCall(visible ? 'showWidget' : 'hideWidget');
- parentCall('setWidgetPosition', theme.position || 'right');
+ if (!undocked) {
+ parentCall(minimized ? 'minimizeWindow' : 'restoreWindow');
+ parentCall(visible ? 'showWidget' : 'hideWidget');
+ parentCall('setWidgetPosition', theme.position || 'right');
+ }
visibility.addListener(this.handleVisibilityChange);
diff --git a/packages/livechat/src/components/Screen/ScreenProvider.tsx b/packages/livechat/src/components/Screen/ScreenProvider.tsx
index 2bccafd60c6f2..49d3fc4dec918 100644
--- a/packages/livechat/src/components/Screen/ScreenProvider.tsx
+++ b/packages/livechat/src/components/Screen/ScreenProvider.tsx
@@ -1,10 +1,9 @@
import type { FunctionalComponent } from 'preact';
import { createContext } from 'preact';
-import { useCallback, useContext, useEffect, useState } from 'preact/hooks';
+import { useContext, useEffect, useState } from 'preact/hooks';
import { parse } from 'query-string';
import { isActiveSession } from '../../helpers/isActiveSession';
-import { createOrUpdateGuest, evaluateChangesAndLoadConfigByFields } from '../../lib/hooks';
import { loadConfig } from '../../lib/main';
import { parentCall } from '../../lib/parentCall';
import { loadMessages } from '../../lib/room';
@@ -63,21 +62,11 @@ export const ScreenContext = createContext({
} as ScreenContextValue);
export const ScreenProvider: FunctionalComponent = ({ children }) => {
- const {
- dispatch,
- config,
- sound,
- minimized = true,
- undocked,
- expanded = false,
- alerts,
- modal,
- iframe,
- ...store
- } = useContext(StoreContext);
+ const store = useContext(StoreContext);
+ const { token, dispatch, config, sound, minimized = true, undocked, expanded = false, alerts, modal, iframe, customFieldsQueue } = store;
const { department, name, email } = iframe.guest || {};
const { color, position: configPosition, background } = config.theme || {};
- const { livechatLogo, hideWatermark = false, registrationForm } = config.settings || {};
+ const { livechatLogo, hideWatermark = false } = config.settings || {};
const {
color: customColor,
@@ -128,7 +117,7 @@ export const ScreenProvider: FunctionalComponent = ({ children }) => {
};
const handleOpenWindow = () => {
- parentCall('openPopout', store.token);
+ parentCall('openPopout', { token, iframe, customFieldsQueue });
dispatch({ undocked: true, minimized: false });
};
@@ -138,30 +127,14 @@ export const ScreenProvider: FunctionalComponent = ({ children }) => {
const dismissNotification = () => !isActiveSession();
- const checkPoppedOutWindow = useCallback(async () => {
+ useEffect(() => {
// Checking if the window is poppedOut and setting parent minimized if yes for the restore purpose
const poppedOut = parse(window.location.search).mode === 'popout';
- const { token = '' } = parse(window.location.search);
setPopedOut(poppedOut);
-
if (poppedOut) {
dispatch({ minimized: false, undocked: true });
}
-
- if (token && typeof token === 'string') {
- if (registrationForm && !name && !email) {
- dispatch({ token });
- return;
- }
- await evaluateChangesAndLoadConfigByFields(async () => {
- await createOrUpdateGuest({ token });
- });
- }
- }, [dispatch, email, name, registrationForm]);
-
- useEffect(() => {
- checkPoppedOutWindow();
- }, [checkPoppedOutWindow]);
+ }, [dispatch]);
const screenProps = {
theme: {
diff --git a/packages/livechat/src/lib/customFields.js b/packages/livechat/src/lib/customFields.js
index b5d11a2d6b63c..2cea28256a778 100644
--- a/packages/livechat/src/lib/customFields.js
+++ b/packages/livechat/src/lib/customFields.js
@@ -28,7 +28,6 @@ class CustomFields {
reset() {
this._initiated = false;
this._started = false;
- this._queue = {};
store.off('change', this.handleStoreChange);
}
@@ -48,18 +47,36 @@ class CustomFields {
CustomFields.instance.processCustomFields();
}
+ addToQueue(key, value, overwrite) {
+ const { customFieldsQueue } = store.state;
+ store.setState({
+ customFieldsQueue: {
+ ...customFieldsQueue,
+ [key]: { value, overwrite },
+ },
+ });
+ }
+
+ getQueue() {
+ return store.state.customFieldsQueue;
+ }
+
+ clearQueue() {
+ store.setState({ customFieldsQueue: {} });
+ }
+
processCustomFields() {
- Object.keys(this._queue).forEach((key) => {
- const { value, overwrite } = this._queue[key];
+ const queue = this.getQueue();
+ Object.entries(queue).forEach(([key, { value, overwrite }]) => {
this.setCustomField(key, value, overwrite);
});
- this._queue = {};
+ this.clearQueue();
}
setCustomField(key, value, overwrite = true) {
if (!this._started) {
- this._queue[key] = { value, overwrite };
+ this.addToQueue(key, value, overwrite);
return;
}
diff --git a/packages/livechat/src/lib/hooks.ts b/packages/livechat/src/lib/hooks.ts
index 1ae9f353bc10f..063a86845fc18 100644
--- a/packages/livechat/src/lib/hooks.ts
+++ b/packages/livechat/src/lib/hooks.ts
@@ -109,6 +109,22 @@ const updateIframeData = (data: Partial) => {
};
const api = {
+ syncState(data: Partial) {
+ if (!data || typeof data !== 'object') {
+ return;
+ }
+
+ void evaluateChangesAndLoadConfigByFields(async () => {
+ const { user } = store.state;
+
+ if (user && data.token && user.token !== data.token) {
+ await createOrUpdateGuest({ token: data.token });
+ }
+
+ store.setState(data);
+ });
+ },
+
pageVisited(info: { change: string; title: string; location: { href: string } }) {
const { token, room } = store.state;
const { _id: rid } = room || {};
diff --git a/packages/livechat/src/lib/parentCall.ts b/packages/livechat/src/lib/parentCall.ts
index 4b03e22927a51..bffc2c0c0c480 100644
--- a/packages/livechat/src/lib/parentCall.ts
+++ b/packages/livechat/src/lib/parentCall.ts
@@ -1,5 +1,13 @@
import { VALID_CALLBACKS } from '../widget';
+const getParentWindowTarget = () => {
+ if (window.opener && !window.opener.closed) {
+ return window.opener;
+ }
+
+ return window.parent;
+};
+
export const parentCall = (method: string, ...args: any[]) => {
const data = {
src: 'rocketchat',
@@ -7,8 +15,9 @@ export const parentCall = (method: string, ...args: any[]) => {
args,
};
+ const target = getParentWindowTarget();
// TODO: This lgtm ignoring deserves more attention urgently!
- window.parent.postMessage(data, '*'); // lgtm [js/cross-window-information-leak]
+ target.postMessage(data, '*'); // lgtm [js/cross-window-information-leak]
};
export const runCallbackEventEmitter = (callbackName: string, data: unknown) =>
diff --git a/packages/livechat/src/store/index.tsx b/packages/livechat/src/store/index.tsx
index 8f5294e42cbae..3e8d0663d2fa6 100644
--- a/packages/livechat/src/store/index.tsx
+++ b/packages/livechat/src/store/index.tsx
@@ -3,13 +3,13 @@ import type { ComponentChildren } from 'preact';
import { Component, createContext } from 'preact';
import { useContext } from 'preact/hooks';
+import Store from './Store';
import type { CustomField } from '../components/Form/CustomFields';
import type { Agent } from '../definitions/agents';
import type { Department } from '../definitions/departments';
import type { TriggerMessage } from '../definitions/triggerMessage';
import { parentCall } from '../lib/parentCall';
import { createToken } from '../lib/random';
-import Store from './Store';
export type LivechatHiddenSytemMessageType =
| 'uj' // User joined
@@ -123,6 +123,7 @@ export type StoreState = {
connecting?: boolean;
messageListPosition?: 'top' | 'bottom' | 'free';
renderedTriggers: TriggerMessage[];
+ customFieldsQueue: Record;
};
export const initialState = (): StoreState => ({
@@ -164,6 +165,7 @@ export const initialState = (): StoreState => ({
ongoingCall: null, // TODO: store call info like url, startTime, timeout, etc here
businessUnit: null,
renderedTriggers: [],
+ customFieldsQueue: {},
});
const dontPersist = [
@@ -191,6 +193,10 @@ window.addEventListener('load', () => {
});
window.addEventListener('visibilitychange', () => {
+ if (store.state.undocked) {
+ return;
+ }
+
!store.state.minimized && !store.state.triggered && parentCall('openWidget');
store.state.iframe.visible ? parentCall('showWidget') : parentCall('hideWidget');
});
diff --git a/packages/livechat/src/widget.ts b/packages/livechat/src/widget.ts
index ca46ab944913c..589e02e554791 100644
--- a/packages/livechat/src/widget.ts
+++ b/packages/livechat/src/widget.ts
@@ -7,11 +7,10 @@ import type { HooksWidgetAPI } from './lib/hooks';
import type { StoreState } from './store';
type InternalWidgetAPI = {
- popup: Window | null;
ready: () => void;
minimizeWindow: () => void;
restoreWindow: () => void;
- openPopout: (token?: string) => void;
+ openPopout: (state: StoreState) => void;
openWidget: () => void;
resizeWidget: (height: number) => void;
removeWidget: () => void;
@@ -23,10 +22,10 @@ type InternalWidgetAPI = {
setWidgetPosition: (position: 'left' | 'right') => void;
};
-export type LivechatMessageEventData> = {
+export type LivechatMessageEventData, Fn extends keyof ApiType = keyof ApiType> = {
src?: string;
- fn: keyof ApiType;
- args: Parameters;
+ fn: Fn;
+ args: Parameters;
};
type InitializeParams = {
@@ -61,6 +60,7 @@ let ready = false;
let smallScreen = false;
let scrollPosition: number;
let widgetHeight: number;
+let popoutWindow: Window | null = null;
export const VALID_CALLBACKS = [
'chat-maximized',
@@ -103,6 +103,12 @@ function clearAllCallbacks() {
});
}
+const formatMessage = (action: keyof HooksWidgetAPI, ...params: Parameters) => ({
+ src: 'rocketchat',
+ fn: action,
+ args: params,
+});
+
// hooks
function callHook(action: keyof HooksWidgetAPI, ...params: Parameters) {
if (!ready) {
@@ -113,11 +119,7 @@ function callHook(action: keyof HooksWidgetAPI, ...params: Parameters) {
}
const api: InternalWidgetAPI = {
- popup: null,
-
openWidget,
resizeWidget,
@@ -475,27 +475,29 @@ const api: InternalWidgetAPI = {
minimizeWindow() {
closeWidget();
},
-
restoreWindow() {
- if (api.popup && api.popup.closed !== true) {
- api.popup.close();
- api.popup = null;
+ if (popoutWindow && popoutWindow.closed !== true) {
+ popoutWindow.close();
+ popoutWindow = null;
}
openWidget();
},
- openPopout(token = '') {
+ openPopout(state: Partial) {
closeWidget();
+
if (!config.url) {
throw new Error('Config.url is not set!');
}
- const urlToken = token && `&token=${token}`;
- api.popup = window.open(
- `${config.url}${config.url.lastIndexOf('?') > -1 ? '&' : '?'}mode=popout${urlToken}`,
- 'livechat-popout',
- `width=${WIDGET_OPEN_WIDTH}, height=${widgetHeight}, toolbars=no`,
- );
+ const url = new URL(config.url);
+ url.searchParams.append('mode', 'popout');
+
+ listenForMessageOnce('ready', () => {
+ popoutWindow?.postMessage(formatMessage('syncState', state), '*');
+ });
+
+ popoutWindow = window.open(url, 'livechat-popout', `width=${WIDGET_OPEN_WIDTH}, height=${widgetHeight}, toolbars=no`);
},
removeWidget() {
@@ -628,16 +630,24 @@ const currentPage: { href: string | null; title: string | null } = {
title: null,
};
-function onNewMessage(event: MessageEvent>>) {
+function isValidMessage(event: MessageEvent>) {
if (event.source === event.target) {
- return;
+ return false;
}
if (!event.data || typeof event.data !== 'object') {
- return;
+ return false;
}
if (!event.data.src || event.data.src !== 'rocketchat') {
+ return false;
+ }
+
+ return true;
+}
+
+function onNewMessage(event: MessageEvent>) {
+ if (!isValidMessage(event)) {
return;
}
@@ -652,6 +662,22 @@ function onNewMessage(event: MessageEvent(
+ key: K,
+ callback: (data: LivechatMessageEventData) => void,
+): void {
+ const listener = (event: MessageEvent>) => {
+ if (!isValidMessage(event) || event.data.fn !== key) {
+ return;
+ }
+
+ callback(event.data);
+ window.removeEventListener('message', listener);
+ };
+
+ window.addEventListener('message', listener);
+}
+
const attachMessageListener = () => {
window.addEventListener('message', onNewMessage, false);
};
diff --git a/packages/mock-providers/CHANGELOG.md b/packages/mock-providers/CHANGELOG.md
index 41f47ab46e644..9c59c12f964b2 100644
--- a/packages/mock-providers/CHANGELOG.md
+++ b/packages/mock-providers/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/mock-providers
+## 0.2.5
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-contexts@19.0.2
+
+
## 0.2.4
### Patch Changes
diff --git a/packages/mock-providers/package.json b/packages/mock-providers/package.json
index 1ba875403a23c..16c57082502f7 100644
--- a/packages/mock-providers/package.json
+++ b/packages/mock-providers/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/mock-providers",
- "version": "0.2.4",
+ "version": "0.2.5",
"private": true,
"dependencies": {
"@rocket.chat/emitter": "~0.31.25",
diff --git a/packages/model-typings/CHANGELOG.md b/packages/model-typings/CHANGELOG.md
index a65ff53411a16..58d605afd24d2 100644
--- a/packages/model-typings/CHANGELOG.md
+++ b/packages/model-typings/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/model-typings
+## 1.6.5
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@7.7.2
+
+
## 1.6.4
### Patch Changes
diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json
index f8b8d5b65c71d..f63e234cad898 100644
--- a/packages/model-typings/package.json
+++ b/packages/model-typings/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/model-typings",
- "version": "1.6.4",
+ "version": "1.6.5",
"private": true,
"devDependencies": {
"@types/node-rsa": "^1.1.4",
diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md
index edf544e29acab..f96a7e4967f78 100644
--- a/packages/models/CHANGELOG.md
+++ b/packages/models/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/models
+## 1.5.5
+
+### Patch Changes
+
+- Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:
+
+ - @rocket.chat/rest-typings@7.7.2
+ - @rocket.chat/model-typings@1.6.5
+
+
## 1.5.4
### Patch Changes
diff --git a/packages/models/package.json b/packages/models/package.json
index 0b1b88a6cdc76..09c97c5434a85 100644
--- a/packages/models/package.json
+++ b/packages/models/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/models",
- "version": "1.5.4",
+ "version": "1.5.5",
"private": true,
"devDependencies": {
"@rocket.chat/jest-presets": "workspace:~",
diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md
index b4e9bb7418092..7596341da39fb 100644
--- a/packages/rest-typings/CHANGELOG.md
+++ b/packages/rest-typings/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/rest-typings
+## 7.7.2
+
+### Patch Changes
+
+- ([#36298](https://github.com/RocketChat/Rocket.Chat/pull/36298) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes an issue that prevented the action of removing an agent when editing a department to work.
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@7.7.2
+
+
## 7.7.1
### Patch Changes
diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json
index 7adb921adf93a..989c0b75e6ab4 100644
--- a/packages/rest-typings/package.json
+++ b/packages/rest-typings/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/rest-typings",
- "version": "7.7.1",
+ "version": "7.7.2",
"devDependencies": {
"@rocket.chat/apps-engine": "workspace:^",
"@rocket.chat/eslint-config": "workspace:~",
diff --git a/packages/rest-typings/src/v1/omnichannel.ts b/packages/rest-typings/src/v1/omnichannel.ts
index 7ab919ca9c6ac..4fb8d99396451 100644
--- a/packages/rest-typings/src/v1/omnichannel.ts
+++ b/packages/rest-typings/src/v1/omnichannel.ts
@@ -215,6 +215,10 @@ const LivechatDepartmentDepartmentIdAgentsPOSTSchema = {
order: {
type: 'number',
},
+ departmentEnabled: { type: 'boolean' },
+ departmentId: { type: 'string' },
+ _id: { type: 'string' },
+ _updatedAt: { type: 'string' },
},
required: ['agentId', 'username'],
additionalProperties: false,
diff --git a/packages/ui-avatar/CHANGELOG.md b/packages/ui-avatar/CHANGELOG.md
index f973bc691bd4d..ee9f077891c1c 100644
--- a/packages/ui-avatar/CHANGELOG.md
+++ b/packages/ui-avatar/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/ui-avatar
+## 15.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-contexts@19.0.2
+
+
## 15.0.1
### Patch Changes
diff --git a/packages/ui-avatar/package.json b/packages/ui-avatar/package.json
index 8eee056b0628a..e96316c108e37 100644
--- a/packages/ui-avatar/package.json
+++ b/packages/ui-avatar/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ui-avatar",
- "version": "15.0.1",
+ "version": "15.0.2",
"private": true,
"devDependencies": {
"@babel/core": "~7.26.0",
diff --git a/packages/ui-client/CHANGELOG.md b/packages/ui-client/CHANGELOG.md
index 6ef3c833424ae..ff442d1a9b32e 100644
--- a/packages/ui-client/CHANGELOG.md
+++ b/packages/ui-client/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/ui-client
+## 19.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-contexts@19.0.2
+ - @rocket.chat/ui-avatar@15.0.2
+
+
## 19.0.1
### Patch Changes
diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json
index 74886221197c6..b8717dc61bb2c 100644
--- a/packages/ui-client/package.json
+++ b/packages/ui-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ui-client",
- "version": "19.0.1",
+ "version": "19.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/ui-contexts/CHANGELOG.md b/packages/ui-contexts/CHANGELOG.md
index de98161c12823..0ce35005136d1 100644
--- a/packages/ui-contexts/CHANGELOG.md
+++ b/packages/ui-contexts/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/ui-contexts
+## 19.0.2
+
+### Patch Changes
+
+- Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:
+
+ - @rocket.chat/rest-typings@7.7.2
+ - @rocket.chat/ddp-client@0.3.26
+ - @rocket.chat/core-typings@7.7.2
+
+
## 19.0.1
### Patch Changes
diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json
index 5c65254787e70..d8a2ce948f16a 100644
--- a/packages/ui-contexts/package.json
+++ b/packages/ui-contexts/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ui-contexts",
- "version": "19.0.1",
+ "version": "19.0.2",
"private": true,
"devDependencies": {
"@rocket.chat/core-typings": "workspace:^",
diff --git a/packages/ui-video-conf/CHANGELOG.md b/packages/ui-video-conf/CHANGELOG.md
index bb700a21181b5..d8450210af48e 100644
--- a/packages/ui-video-conf/CHANGELOG.md
+++ b/packages/ui-video-conf/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/ui-video-conf
+## 19.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-contexts@19.0.2
+ - @rocket.chat/ui-avatar@15.0.2
+
+
## 19.0.1
### Patch Changes
diff --git a/packages/ui-video-conf/package.json b/packages/ui-video-conf/package.json
index 08d513cd3c4fc..d45be3be47657 100644
--- a/packages/ui-video-conf/package.json
+++ b/packages/ui-video-conf/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ui-video-conf",
- "version": "19.0.1",
+ "version": "19.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/ui-voip/CHANGELOG.md b/packages/ui-voip/CHANGELOG.md
index 5cd1d0b47f4c0..38620fb707012 100644
--- a/packages/ui-voip/CHANGELOG.md
+++ b/packages/ui-voip/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/ui-voip
+## 9.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-contexts@19.0.2
+ - @rocket.chat/ui-avatar@15.0.2
+ - @rocket.chat/ui-client@19.0.2
+
+
## 9.0.1
### Patch Changes
diff --git a/packages/ui-voip/package.json b/packages/ui-voip/package.json
index 901f80efe86de..ea92aafa1a4b4 100644
--- a/packages/ui-voip/package.json
+++ b/packages/ui-voip/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ui-voip",
- "version": "9.0.1",
+ "version": "9.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/web-ui-registration/CHANGELOG.md b/packages/web-ui-registration/CHANGELOG.md
index 2b06a7346e855..a8a09b1d5d8b1 100644
--- a/packages/web-ui-registration/CHANGELOG.md
+++ b/packages/web-ui-registration/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/web-ui-registration
+## 19.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-contexts@19.0.2
+
+
## 19.0.1
### Patch Changes
diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json
index 3c077b147e86c..ef56371345132 100644
--- a/packages/web-ui-registration/package.json
+++ b/packages/web-ui-registration/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/web-ui-registration",
- "version": "19.0.1",
+ "version": "19.0.2",
"private": true,
"homepage": "https://rocket.chat",
"main": "./dist/index.js",