diff --git a/apps/meteor/server/models/raw/LivechatRooms.ts b/apps/meteor/server/models/raw/LivechatRooms.ts index e71fbe91859..f63f12a9cc6 100644 --- a/apps/meteor/server/models/raw/LivechatRooms.ts +++ b/apps/meteor/server/models/raw/LivechatRooms.ts @@ -2044,13 +2044,13 @@ export class LivechatRoomsRaw extends BaseRaw implements ILive 'metrics.response.ft': analyticsData.firstResponseTime, }), }, - $inc: { - ...(analyticsData && { + ...(analyticsData && { + $inc: { 'metrics.response.total': 1, 'metrics.response.tt': analyticsData.responseTime as number, 'metrics.reaction.tt': analyticsData.reactionTime as number, - }), - }, + }, + }), }; // livechat analytics : update last message timestamps diff --git a/packages/ddp-client/src/livechat/LivechatClientImpl.ts b/packages/ddp-client/src/livechat/LivechatClientImpl.ts index 8b62580e50f..9274c25c5c2 100644 --- a/packages/ddp-client/src/livechat/LivechatClientImpl.ts +++ b/packages/ddp-client/src/livechat/LivechatClientImpl.ts @@ -324,6 +324,16 @@ export class LivechatClientImpl extends DDPSDK implements LivechatStream, Livech }); } + async sendUiInteraction( + payload: OperationParams<'POST', '/apps/ui.interaction/:id'>, + appId: string, + ): Promise>> { + if (!this.token) { + throw new Error('Invalid token'); + } + return this.rest.post(`/apps/ui.interaction/${appId}`, payload, { headers: { 'x-visitor-token': this.token } }); + } + // API DELETE deleteMessage(id: string, { rid }: { rid: string }): Promise>> { diff --git a/packages/ddp-client/src/livechat/types/LivechatSDK.ts b/packages/ddp-client/src/livechat/types/LivechatSDK.ts index 9e646152f4a..171d6dfc241 100644 --- a/packages/ddp-client/src/livechat/types/LivechatSDK.ts +++ b/packages/ddp-client/src/livechat/types/LivechatSDK.ts @@ -95,4 +95,9 @@ export interface LivechatEndpoints { id: string, args: OperationParams<'PUT', '/v1/livechat/message/:_id'>, ): Promise>>; + + sendUiInteraction( + payload: OperationParams<'POST', '/apps/ui.interaction/:id'>, + appId: string, + ): Promise>>; } diff --git a/packages/livechat/src/lib/uiKit.js b/packages/livechat/src/lib/uiKit.js index c7cae9e4db5..dcd9d2e34a5 100644 --- a/packages/livechat/src/lib/uiKit.js +++ b/packages/livechat/src/lib/uiKit.js @@ -104,16 +104,19 @@ export const triggerAction = async ({ appId, type, actionId, rid, mid, viewId, c try { const result = await Promise.race([ - Livechat.rest.post(`/apps/ui.interaction/${appId}`, { - type, - actionId, - rid, - mid, - viewId, - container, - triggerId, - payload, - }), + Livechat.sendUiInteraction( + { + type, + actionId, + rid, + mid, + viewId, + container, + triggerId, + payload, + }, + appId, + ), new Promise((_, reject) => { setTimeout(() => { diff --git a/packages/rest-typings/src/apps/index.ts b/packages/rest-typings/src/apps/index.ts index c70b8d7b60d..76ad596bb90 100644 --- a/packages/rest-typings/src/apps/index.ts +++ b/packages/rest-typings/src/apps/index.ts @@ -251,4 +251,17 @@ export type AppsEndpoints = { app: App; }; }; + + '/apps/ui.interaction/:id': { + POST: (params: { + type: string; + actionId: string; + rid: string; + mid: string; + viewId: string; + container: string; + triggerId: string; + payload: any; + }) => any; + }; };