diff --git a/package-lock.json b/package-lock.json index 4c0368551..929b7a4ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/apps-engine", - "version": "1.42.1", + "version": "1.42.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 9707f3adf..a7c5d6a22 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/apps-engine", - "version": "1.42.1", + "version": "1.42.2", "description": "The engine code for the Rocket.Chat Apps which manages, runs, translates, coordinates and all of that.", "main": "index", "typings": "index", diff --git a/src/server/managers/AppListenerManager.ts b/src/server/managers/AppListenerManager.ts index b2f9fc39b..3fe22a243 100644 --- a/src/server/managers/AppListenerManager.ts +++ b/src/server/managers/AppListenerManager.ts @@ -239,6 +239,8 @@ export class AppListenerManager { private listeners: Map>; + private defaultHandlers = new Map(); + /** * Locked events are those who are listed in an app's * "essentials" list but the app is disabled. @@ -256,6 +258,8 @@ export class AppListenerManager { this.listeners.set(intt, []); this.lockedEvents.set(intt, new Set()); }); + + this.defaultHandlers.set('executeViewClosedHandler', { success: true }); } public registerListeners(app: ProxiedApp): void { @@ -1052,7 +1056,12 @@ export class AppListenerManager { const app = this.manager.getOneById(appId); if (!app?.hasMethod(method)) { - console.warn(`App ${appId} triggered an interaction but it doen't exist or doesn't have method ${method}`); + if (this.defaultHandlers.has(method)) { + console.warn(`App ${appId} triggered an interaction but it doesn't exist or doesn't have method ${method}. Falling back to default handler.`); + return this.defaultHandlers.get(method); + } + + console.warn(`App ${appId} triggered an interaction but it doesn't exist or doesn't have method ${method} and there is no default handler for it.`); return; }