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", "version": "v1.12.0",
"license": "Elastic License 2.0 (ELv2)", "license": "Elastic License 2.0 (ELv2)",
"dependencies": { "dependencies": {
"@fastify/deepmerge": "^2.0.0",
"@maxmind/geoip2-node": "^4.2.0", "@maxmind/geoip2-node": "^4.2.0",
"express": "^4.21.1", "express": "^4.21.1",
"jsonwebtoken": "^9.0.2", "jsonwebtoken": "^9.0.2",
@ -36,6 +37,11 @@
"kuler": "^2.0.0" "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": { "node_modules/@maxmind/geoip2-node": {
"version": "4.2.0", "version": "4.2.0",
"resolved": "https://registry.npmjs.org/@maxmind/geoip2-node/-/geoip2-node-4.2.0.tgz", "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", "homepage": "https://github.com/openreplay/openreplay#readme",
"dependencies": { "dependencies": {
"@fastify/deepmerge": "^2.0.0",
"@maxmind/geoip2-node": "^4.2.0", "@maxmind/geoip2-node": "^4.2.0",
"express": "^4.21.1", "express": "^4.21.1",
"jsonwebtoken": "^9.0.2", "jsonwebtoken": "^9.0.2",

View file

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