11import type { ILivechatAgent , ILivechatTrigger , ILivechatTriggerAction , ILivechatTriggerType , Serialized } from '@rocket.chat/core-typings' ;
22
33import { Livechat } from '../api' ;
4+ import { processUnread } from './main' ;
45import type { Agent } from '../definitions/agents' ;
56import { upsert } from '../helpers/upsert' ;
67import store from '../store' ;
7- import { processUnread } from './main' ;
88
99type AgentPromise = { username : string } | Serialized < ILivechatAgent > | null ;
1010
@@ -27,14 +27,11 @@ const getNextAgentFromQueue = async () => {
2727 const dep = department || defaultDepartment ;
2828
2929 let agent = null ;
30- try {
31- const tempAgent = await Livechat . nextAgent ( { department : dep } ) ;
3230
33- if ( isAgentWithInfo ( tempAgent ?. agent ) ) {
34- agent = tempAgent . agent ;
35- }
36- } catch ( error ) {
37- return Promise . reject ( error ) ;
31+ const tempAgent = await Livechat . nextAgent ( { department : dep } ) ;
32+
33+ if ( isAgentWithInfo ( tempAgent ?. agent ) ) {
34+ agent = tempAgent . agent ;
3835 }
3936
4037 store . setState ( { defaultAgent : { ...agent , department : dep , ts : Date . now ( ) } as Agent } ) ;
@@ -47,23 +44,20 @@ export const getAgent = async (triggerAction: ILivechatTriggerAction): Promise<A
4744 return agentPromise ;
4845 }
4946
50- agentPromise = new Promise ( async ( resolve , reject ) => {
47+ agentPromise = new Promise ( ( resolve , reject ) => {
5148 const { sender, name = '' } = triggerAction . params || { } ;
5249
5350 if ( sender === 'custom' ) {
5451 resolve ( { username : name } ) ;
5552 }
5653
5754 if ( sender === 'queue' ) {
58- try {
59- const agent = await getNextAgentFromQueue ( ) ;
60- resolve ( agent ) ;
61- } catch ( _ ) {
62- resolve ( { username : 'rocket.cat' } ) ;
63- }
55+ getNextAgentFromQueue ( )
56+ . then ( ( agent ) => resolve ( agent ) )
57+ . catch ( ( ) => resolve ( { username : 'rocket.cat' } ) ) ;
6458 }
6559
66- return reject ( 'Unknown sender type.' ) ;
60+ return reject ( new Error ( 'Unknown sender type' ) ) ;
6761 } ) ;
6862
6963 // expire the promise cache as well
@@ -74,8 +68,8 @@ export const getAgent = async (triggerAction: ILivechatTriggerAction): Promise<A
7468 return agentPromise ;
7569} ;
7670
77- export const upsertMessage = async ( message : Record < string , unknown > ) => {
78- await store . setState ( {
71+ export const upsertMessage = async ( message : { _id : string ; msg ?: string ; t ?: string ; ts : number } ) => {
72+ store . setState ( {
7973 messages : upsert (
8074 store . state . messages ,
8175 message ,
@@ -89,12 +83,12 @@ export const upsertMessage = async (message: Record<string, unknown>) => {
8983
9084export const removeMessage = async ( messageId : string ) => {
9185 const { messages } = store . state ;
92- await store . setState ( { messages : messages . filter ( ( { _id } ) => _id !== messageId ) } ) ;
86+ store . setState ( { messages : messages . filter ( ( { _id } ) => _id !== messageId ) } ) ;
9387} ;
9488
9589export const removeTriggerMessage = async ( messageId : string ) => {
9690 const { renderedTriggers } = store . state ;
97- await store . setState ( { renderedTriggers : renderedTriggers . filter ( ( { _id } ) => _id !== messageId ) } ) ;
91+ store . setState ( { renderedTriggers : renderedTriggers . filter ( ( { _id } ) => _id !== messageId ) } ) ;
9892} ;
9993
10094export const hasTriggerCondition = ( conditionName : ILivechatTriggerType ) => ( trigger : ILivechatTrigger ) => {
@@ -122,9 +116,9 @@ export const requestTriggerMessages = async ({
122116
123117 const { response } = await Livechat . rest . post ( `/v1/livechat/triggers/${ triggerId } /external-service/call` , { extraData, token } ) ;
124118 return response . contents ;
125- } catch ( _ ) {
119+ } catch ( error ) {
126120 if ( ! fallbackMessage ) {
127- throw Error ( 'Unable to fetch message from external service.' ) ;
121+ throw Error ( 'Unable to fetch message from external service.' , { cause : error } ) ;
128122 }
129123
130124 return [ { msg : fallbackMessage , order : 0 } ] ;
0 commit comments