Skip to content
32 changes: 21 additions & 11 deletions app/livechat/server/api/v1/room.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,20 @@ API.v1.addRoute('livechat/room', {

const extraCheckParams = onCheckRoomParams(defaultCheckParams);

try {
check(this.queryParams, extraCheckParams);
check(this.queryParams, extraCheckParams);

const { token, rid: roomId, agentId, ...extraParams } = this.queryParams;
const { token, rid: roomId, agentId, ...extraParams } = this.queryParams;

const guest = findGuest(token);
if (!guest) {
throw new Meteor.Error('invalid-token');
const guest = findGuest(token);
if (!guest) {
throw new Meteor.Error('invalid-token');
}

let room;
if (!roomId) {
room = LivechatRooms.findOneOpenByVisitorToken(token, {});
if (room) {
return API.v1.success({ room, newRoom: false });
}

let agent;
Expand All @@ -39,13 +45,17 @@ API.v1.addRoute('livechat/room', {
agent = { agentId, username };
}

const rid = roomId || Random.id();
const room = Promise.await(getRoom({ guest, rid, agent, extraParams }));
Comment thread
KevLehman marked this conversation as resolved.

const rid = Random.id();
room = Promise.await(getRoom({ guest, rid, agent, extraParams }));
return API.v1.success(room);
} catch (e) {
return API.v1.failure(e);
}

room = LivechatRooms.findOneOpenByRoomIdAndVisitorToken(roomId, token, {});
if (!room) {
throw new Meteor.Error('invalid-room');
}

return API.v1.success({ room, newRoom: false });
},
});

Expand Down