feat(assist): fixed the issue with overwritten metadata

This commit is contained in:
Alexander 2024-11-18 15:57:39 +01:00
parent 544457016a
commit 94b9a492f0
3 changed files with 10 additions and 2 deletions

View file

@ -9,6 +9,7 @@
"version": "v1.12.0",
"license": "Elastic License 2.0 (ELv2)",
"dependencies": {
"@fastify/deepmerge": "^2.0.0",
"@maxmind/geoip2-node": "^4.2.0",
"express": "^4.21.1",
"jsonwebtoken": "^9.0.2",
@ -36,6 +37,11 @@
"kuler": "^2.0.0"
}
},
"node_modules/@fastify/deepmerge": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-2.0.0.tgz",
"integrity": "sha512-fsaybTGDyQ5KpPsplQqb9yKdCf2x/pbNpMNk8Tvp3rRz7lVcupKysH4b2ELMN2P4Hak1+UqTYdTj/u4FNV2p0g=="
},
"node_modules/@maxmind/geoip2-node": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/@maxmind/geoip2-node/-/geoip2-node-4.2.0.tgz",

View file

@ -18,6 +18,7 @@
},
"homepage": "https://github.com/openreplay/openreplay#readme",
"dependencies": {
"@fastify/deepmerge": "^2.0.0",
"@maxmind/geoip2-node": "^4.2.0",
"express": "^4.21.1",
"jsonwebtoken": "^9.0.2",

View file

@ -24,6 +24,7 @@ const {
DecreaseOnlineRooms,
} = require('../utils/metrics');
const {logger} = require('./logger');
const deepMerge = require('@fastify/deepmerge')({all: true});
const findSessionSocketId = async (io, roomId, tabId) => {
let pickFirstSession = tabId === undefined;
@ -171,14 +172,14 @@ async function onUpdateEvent(socket, ...args) {
}
args[0] = updateSessionData(socket, args[0])
Object.assign(socket.handshake.query.sessionInfo, args[0].data, {tabId: args[0]?.meta?.tabId});
socket.handshake.query.sessionInfo = deepMerge(socket.handshake.query.sessionInfo, args[0]?.data, {tabId: args[0]?.meta?.tabId});
// Update sessionInfo for all agents in the room
const io = getServer();
const connected_sockets = await io.in(socket.handshake.query.roomId).fetchSockets();
for (let item of connected_sockets) {
if (item.handshake.query.identity === IDENTITIES.session && item.handshake.query.sessionInfo) {
Object.assign(item.handshake.query.sessionInfo, args[0]?.data, {tabId: args[0]?.meta?.tabId});
item.handshake.query.sessionInfo = deepMerge(item.handshake.query.sessionInfo, args[0]?.data, {tabId: args[0]?.meta?.tabId});
} else if (item.handshake.query.identity === IDENTITIES.agent) {
socket.to(item.id).emit(EVENTS_DEFINITION.listen.UPDATE_EVENT, args[0]);
}