From e7bc1021f7aaef05685753923fe48feba6567f94 Mon Sep 17 00:00:00 2001
From: Kevin Aleman <kevin.aleman@rocket.chat>
Date: Wed, 9 Feb 2022 12:22:24 -0600
Subject: [PATCH] [FIX] Prevent Apps Bridge to remove visitor status from room
 (#24305)

* Store visitor status inside room for UI usage
---
 app/apps/server/converters/rooms.js    | 1 +
 app/apps/server/converters/visitors.js | 2 ++
 app/livechat/server/lib/Livechat.js    | 4 +++-
 package-lock.json                      | 6 +++---
 package.json                           | 2 +-
 5 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/app/apps/server/converters/rooms.js b/app/apps/server/converters/rooms.js
index ecd2385557e..2b82f93eee5 100644
--- a/app/apps/server/converters/rooms.js
+++ b/app/apps/server/converters/rooms.js
@@ -41,6 +41,7 @@ export class AppRoomsConverter {
 				_id: visitor._id,
 				username: visitor.username,
 				token: visitor.token,
+				status: visitor.status,
 			};
 		}
 
diff --git a/app/apps/server/converters/visitors.js b/app/apps/server/converters/visitors.js
index 1f698cf41ee..55931c82a89 100644
--- a/app/apps/server/converters/visitors.js
+++ b/app/apps/server/converters/visitors.js
@@ -33,6 +33,7 @@ export class AppVisitorsConverter {
 			phone: 'phone',
 			visitorEmails: 'visitorEmails',
 			livechatData: 'livechatData',
+			status: 'status',
 		};
 
 		return transformMappedData(visitor, map);
@@ -50,6 +51,7 @@ export class AppVisitorsConverter {
 			token: visitor.token,
 			phone: visitor.phone,
 			livechatData: visitor.livechatData,
+			status: visitor.status,
 			...(visitor.visitorEmails && { visitorEmails: visitor.visitorEmails }),
 			...(visitor.department && { department: visitor.department }),
 		};
diff --git a/app/livechat/server/lib/Livechat.js b/app/livechat/server/lib/Livechat.js
index 222904291ac..d0adadfc5d2 100644
--- a/app/livechat/server/lib/Livechat.js
+++ b/app/livechat/server/lib/Livechat.js
@@ -270,7 +270,7 @@ export const Livechat = {
 		return true;
 	},
 
-	registerGuest({ id, token, name, email, department, phone, username, connectionData } = {}) {
+	registerGuest({ id, token, name, email, department, phone, username, connectionData, status = 'online' } = {}) {
 		check(token, String);
 		check(id, Match.Maybe(String));
 
@@ -280,6 +280,7 @@ export const Livechat = {
 		const updateUser = {
 			$set: {
 				token,
+				status,
 				...(phone?.number ? { phone: [{ phoneNumber: phone.number }] } : {}),
 				...(name ? { name } : {}),
 			},
@@ -321,6 +322,7 @@ export const Livechat = {
 
 			const userData = {
 				username,
+				status,
 				ts: new Date(),
 				...(id && { _id: id }),
 			};
diff --git a/package-lock.json b/package-lock.json
index 38d518b46bb..23ab1ada42b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5357,9 +5357,9 @@
       }
     },
     "@rocket.chat/apps-engine": {
-      "version": "1.30.0",
-      "resolved": "https://registry.npmjs.org/@rocket.chat/apps-engine/-/apps-engine-1.30.0.tgz",
-      "integrity": "sha512-04X4nQPgZEz9w4b/8zCyW+EVixfzdrugW4u6YUYnB4tc9lDALawSvhz88XlDGvKwbsUKFfSx6ejdhASwSssPcA==",
+      "version": "1.31.0-alpha.5889",
+      "resolved": "https://registry.npmjs.org/@rocket.chat/apps-engine/-/apps-engine-1.31.0-alpha.5889.tgz",
+      "integrity": "sha512-Trn8rbEAmYnSx/acksn8ItpfeW4ZQCiSRQ2iGzKRKPjKo10hkArOcIJjFP+aetq28VusItD9TENOq9JLJgLCxw==",
       "requires": {
         "adm-zip": "^0.4.9",
         "cryptiles": "^4.1.3",
diff --git a/package.json b/package.json
index 4c764962f6a..da9ec1c8a1e 100644
--- a/package.json
+++ b/package.json
@@ -176,7 +176,7 @@
 		"@nivo/heatmap": "0.73.0",
 		"@nivo/line": "0.62.0",
 		"@nivo/pie": "0.73.0",
-		"@rocket.chat/apps-engine": "^1.30.0",
+		"@rocket.chat/apps-engine": "^1.31.0-alpha.5889",
 		"@rocket.chat/css-in-js": "^0.31.3",
 		"@rocket.chat/emitter": "^0.31.3",
 		"@rocket.chat/fuselage": "^0.31.3",
-- 
GitLab