diff --git a/src/apps/app_sdk/services/AppsDisabledService.ts b/src/apps/app_sdk/services/AppsDisabledService.ts index 462f7650..d64edab8 100644 --- a/src/apps/app_sdk/services/AppsDisabledService.ts +++ b/src/apps/app_sdk/services/AppsDisabledService.ts @@ -37,6 +37,10 @@ export class AppsDisabledService implements IAppsService { throw new AppsIsDisabledError(); } + async removeBySession(manager: SessionManager, session: string) { + return; + } + migrate(knex: Knex): Promise { return; } diff --git a/src/apps/app_sdk/services/AppsEnabledService.ts b/src/apps/app_sdk/services/AppsEnabledService.ts index 345540c2..c1116425 100644 --- a/src/apps/app_sdk/services/AppsEnabledService.ts +++ b/src/apps/app_sdk/services/AppsEnabledService.ts @@ -156,6 +156,12 @@ export class AppsEnabledService implements IAppsService { return; } + async removeBySession(manager: SessionManager, session: string) { + const knex = manager.store.getWAHADatabase(); + const repo = new AppRepository(knex); + await repo.deleteBySession(session); + } + async beforeSessionStart(session: WhatsappSession, store: DataStore) { const knex = store.getWAHADatabase(); const repo = new AppRepository(knex); diff --git a/src/apps/app_sdk/services/IAppsService.ts b/src/apps/app_sdk/services/IAppsService.ts index 03c09ce7..a630d6bc 100644 --- a/src/apps/app_sdk/services/IAppsService.ts +++ b/src/apps/app_sdk/services/IAppsService.ts @@ -15,6 +15,8 @@ export interface IAppsService { delete(manager: SessionManager, appId: string): Promise; + removeBySession(manager: SessionManager, session: string): Promise; + beforeSessionStart(session: WhatsappSession, store: DataStore): Promise; afterSessionStart(session: WhatsappSession, store: DataStore): Promise; diff --git a/src/apps/app_sdk/storage/AppRepository.ts b/src/apps/app_sdk/storage/AppRepository.ts index e0277724..e84d2733 100644 --- a/src/apps/app_sdk/storage/AppRepository.ts +++ b/src/apps/app_sdk/storage/AppRepository.ts @@ -123,4 +123,11 @@ export class AppRepository { async delete(id: string): Promise { await this.knex(this.tableName).where('id', id).delete(); } + + /** + * Deletes all apps for a session + */ + async deleteBySession(session: string): Promise { + await this.knex(this.tableName).where('session', session).delete(); + } } diff --git a/src/core/manager.core.ts b/src/core/manager.core.ts index 969104ac..d151195d 100644 --- a/src/core/manager.core.ts +++ b/src/core/manager.core.ts @@ -295,6 +295,7 @@ export class SessionManagerCore extends SessionManager implements OnModuleInit { async delete(name: string): Promise { this.onlyDefault(name); + await this.appsService.removeBySession(this, name); this.session = DefaultSessionStatus.REMOVED; this.updateSession(); this.sessionConfig = undefined;