Skip to content

Commit

Permalink
Refactor based on Kevins suggestions to call baseClosing data from in…
Browse files Browse the repository at this point in the history
… main func
  • Loading branch information
murtaza98 committed Apr 21, 2022
1 parent 20b5e08 commit c5bf74d
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
import { ILivechatVisitor, ILivechatAgent, IVoipRoom, IRoomClosingInfo } from '@rocket.chat/core-typings';
import { IRoomClosingInfo, IOmniRoomClosingMessage } from '@rocket.chat/core-typings';

import { OmnichannelVoipService } from '../../../../../server/services/omnichannel-voip/service';
import { overwriteClassOnLicense } from '../../../license/server';

const { getBaseRoomClosingData } = OmnichannelVoipService.prototype;

overwriteClassOnLicense('livechat-enterprise', OmnichannelVoipService, {
async getRoomClosingData(
getRoomClosingData(
_originalFn: any,
closerParam: ILivechatVisitor | ILivechatAgent,
room: IVoipRoom,
options: { comment?: string; tags?: string[] },
closeInfo: IRoomClosingInfo,
closeSystemMsgData: IOmniRoomClosingMessage,
sysMessageId: 'voip-call-wrapup' | 'voip-call-ended-unexpectedly',
): Promise<{ closeInfo: IRoomClosingInfo; closeSystemMsgData: any }> {
const { closeInfo, closeSystemMsgData } = await getBaseRoomClosingData(closerParam, room, options, sysMessageId);

options: { comment?: string; tags?: string[] },
): { closeInfo: IRoomClosingInfo; closeSystemMsgData: IOmniRoomClosingMessage } {
const { comment, tags } = options;
if (comment) {
closeSystemMsgData.msg = comment;
Expand Down
25 changes: 14 additions & 11 deletions apps/meteor/server/services/omnichannel-voip/service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import type {
IRoomCreationResponse,
IUser,
ILivechatAgent,
IOmniRoomClosingMessage,
} from '@rocket.chat/core-typings';
import {
ILivechatVisitor,
Expand Down Expand Up @@ -280,8 +281,10 @@ export class OmnichannelVoipService extends ServiceClassInternal implements IOmn
return false;
}

const { closeInfo, closeSystemMsgData } = await this.getRoomClosingData(closerParam, room, options, sysMessageId);
this.logger.debug(`Closing room ${room._id} by ${closerParam._id}`);
let { closeInfo, closeSystemMsgData } = await this.getBaseRoomClosingData(closerParam, room, options, sysMessageId);
const finalClosingData = this.getRoomClosingData(closeInfo, closeSystemMsgData, sysMessageId, options);
closeInfo = finalClosingData.closeInfo;
closeSystemMsgData = finalClosingData.closeSystemMsgData;

await sendMessage(user, closeSystemMsgData, room);

Expand All @@ -297,21 +300,21 @@ export class OmnichannelVoipService extends ServiceClassInternal implements IOmn
return true;
}

async getRoomClosingData(
closerParam: ILivechatVisitor | ILivechatAgent,
room: IVoipRoom,
options: { comment?: string; tags?: string[] },
sysMessageId: 'voip-call-wrapup' | 'voip-call-ended-unexpectedly',
): Promise<{ closeInfo: IRoomClosingInfo; closeSystemMsgData: any }> {
return this.getBaseRoomClosingData(closerParam, room, options, sysMessageId);
getRoomClosingData(
closeInfo: IRoomClosingInfo,
closeSystemMsgData: any,
_sysMessageId: 'voip-call-wrapup' | 'voip-call-ended-unexpectedly',
_options: { comment?: string; tags?: string[] },
): { closeInfo: IRoomClosingInfo; closeSystemMsgData: IOmniRoomClosingMessage } {
return { closeInfo, closeSystemMsgData };
}

async getBaseRoomClosingData(
closerParam: ILivechatVisitor | ILivechatAgent,
room: IVoipRoom,
_options: { comment?: string; tags?: string[] },
sysMessageId: 'voip-call-wrapup' | 'voip-call-ended-unexpectedly',
): Promise<{ closeInfo: IRoomClosingInfo; closeSystemMsgData: any }> {
): Promise<{ closeInfo: IRoomClosingInfo; closeSystemMsgData: IOmniRoomClosingMessage }> {
const now = new Date();
const closer = isILivechatVisitor(closerParam) ? 'visitor' : 'user';
const callTotalHoldTime = await calculateOnHoldTimeForRoom(room, now);
Expand All @@ -327,7 +330,7 @@ export class OmnichannelVoipService extends ServiceClassInternal implements IOmn
},
};

const message = {
const message: IOmniRoomClosingMessage = {
t: sysMessageId,
groupable: false,
};
Expand Down
2 changes: 2 additions & 0 deletions packages/core-typings/src/IMessage/IMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -259,3 +259,5 @@ export const isIMessageInbox = (message: IMessage): message is IMessageInbox =>
"email" in message;
export const isVoipMessage = (message: IMessage): message is IVoipMessage =>
"voipData" in message;

export type IOmniRoomClosingMessage = Pick<IMessage, 't' | 'groupable'> & Partial<Pick<IMessage, 'msg'>>

0 comments on commit c5bf74d

Please sign in to comment.