diff --git a/lib/QueueWindowProcessor.ts b/lib/QueueWindowProcessor.ts index 9703457..292eb40 100644 --- a/lib/QueueWindowProcessor.ts +++ b/lib/QueueWindowProcessor.ts @@ -3,6 +3,7 @@ import { IJobContext, IProcessor } from '@rocket.chat/apps-engine/definition/sch import { Logs } from '../enum/Logs'; import { getError } from './Helper'; import { setIsProcessingMessage } from './Persistence'; +import { cancelAllEventSchedulerJobForSessionAndName } from './Scheduler'; export class QueueWindowScheduler implements IProcessor { public id: string; @@ -13,8 +14,11 @@ export class QueueWindowScheduler implements IProcessor { public async processor(jobContext: IJobContext, read: IRead, modify: IModify, http: IHttp, persistence: IPersistence): Promise { const sessionId = jobContext.rid; + const eventName = jobContext.eventName; try { await setIsProcessingMessage(read, persistence, sessionId, false); + await cancelAllEventSchedulerJobForSessionAndName(modify, sessionId, eventName); + console.log(`{ roomID: ${jobContext.rid} } The DF App is dropping the blackout window from the event ${ eventName } due to blackout`); } catch (error) { // Failed to send event, so close blackout window console.error(`${Logs.DIALOGFLOW_REST_API_ERROR}: { roomID: ${sessionId} } ${getError(error)}`); diff --git a/lib/Scheduler.ts b/lib/Scheduler.ts index 285431b..bf2b59d 100644 --- a/lib/Scheduler.ts +++ b/lib/Scheduler.ts @@ -9,6 +9,10 @@ export const cancelAllEventSchedulerJobForSession = async (modify: IModify, sess await modify.getScheduler().cancelJobByDataQuery({ sessionId, jobName: JobName.EVENT_SCHEDULER }); }; +export const cancelAllEventSchedulerJobForSessionAndName = async (modify: IModify, sessionId: string, eventName: string) => { + await modify.getScheduler().cancelJobByDataQuery({ sessionId, jobName: JobName.EVENT_SCHEDULER, eventName }); +}; + export const cancelAllBlackoutTimeoutSchedulerJobForSession = async (modify: IModify, sessionId: string) => { await modify.getScheduler().cancelJobByDataQuery({ sessionId, jobName: JobName.CONTINUE_BLACKOUT_TIMEOUT_SCHEDULER }); }; diff --git a/lib/payloadAction.ts b/lib/payloadAction.ts index ceaebc9..ada067d 100644 --- a/lib/payloadAction.ts +++ b/lib/payloadAction.ts @@ -83,6 +83,7 @@ export const handlePayloadActions = async (app: IApp, read: IRead, modify: IMo rid, sessionId: rid, jobName: JobName.CONTINUE_BLACKOUT_TIMEOUT_SCHEDULER, + eventName: params.eventName, }, }; await cancelAllBlackoutTimeoutSchedulerJobForSession(modify, rid);