diff --git a/src/definition/accessors/IModerationModify.ts b/src/definition/accessors/IModerationModify.ts index bc60d2335..89474107a 100644 --- a/src/definition/accessors/IModerationModify.ts +++ b/src/definition/accessors/IModerationModify.ts @@ -24,4 +24,19 @@ export interface IModerationModify { * @param appId the app id */ dismissReportsByUserId(userId: IUser['id'], reason: string, action: string, appId: string): Promise; + + /** + * Provides a way for Apps to add rep roles. + * @param appId the app id + * @throws if the app does not have the permission to add rep roles + */ + addRepRoles(appId: string): Promise; + + /** + * Provides a way for Apps to add default permissions to rep roles. + * @param appId the app id + * @throws if the app does not have the permission to add rep roles + * @throws if the app does not have the permission to add default permissions to rep roles + */ + addRepRolePermissions(appId: string): Promise; } diff --git a/src/definition/package.json b/src/definition/package.json index c4fa11f65..1dd702d12 100644 --- a/src/definition/package.json +++ b/src/definition/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/apps-ts-definition", - "version": "1.40.0-alpha", + "version": "1.41.0-alpha", "description": "Contains the TypeScript definitions for the Rocket.Chat Applications.", "main": "index.js", "typings": "index", diff --git a/src/server/accessors/ModerationModify.ts b/src/server/accessors/ModerationModify.ts index e46cdc094..13b1fcb8a 100644 --- a/src/server/accessors/ModerationModify.ts +++ b/src/server/accessors/ModerationModify.ts @@ -17,4 +17,12 @@ export class ModerationModify implements IModerationModify { public dismissReportsByUserId(userId: IUser['id'], reason: string, action: string, appId: string): Promise { return this.moderationBridge.doDismissReportsByUserId(userId, reason, action, appId); } + + public addRepRoles(appId: string): Promise { + return this.moderationBridge.doAddRepRoles(appId); + } + + public addRepRolePermissions(appId: string): Promise { + return this.moderationBridge.doAddRepRolePermissions(appId); + } } diff --git a/src/server/bridges/ModerationBridge.ts b/src/server/bridges/ModerationBridge.ts index fb3b5300d..23bcb51d1 100644 --- a/src/server/bridges/ModerationBridge.ts +++ b/src/server/bridges/ModerationBridge.ts @@ -24,9 +24,23 @@ export abstract class ModerationBridge extends BaseBridge { } } + public async doAddRepRoles(appId: string): Promise { + if (this.hasWritePermission(appId)) { + return this.addRepRoles(appId); + } + } + + public async doAddRepRolePermissions(appId: string): Promise { + if (this.hasWritePermission(appId)) { + return this.addRepRolePermissions(appId); + } + } + protected abstract report(messageId: string, description: string, userId: string, appId: string): Promise; protected abstract dismissReportsByMessageId(messageId: string, reason: string, action: string, appId: string): Promise; protected abstract dismissReportsByUserId(userId: string, reason: string, action: string, appId: string): Promise; + protected abstract addRepRoles(appId: string): Promise; + protected abstract addRepRolePermissions(appId: string): Promise; private hasWritePermission(appId: string): boolean { if (AppPermissionManager.hasPermission(appId, AppPermissions.moderation.write)) { diff --git a/tests/test-data/bridges/moderationBridge.ts b/tests/test-data/bridges/moderationBridge.ts index 584538437..86f91ac5b 100644 --- a/tests/test-data/bridges/moderationBridge.ts +++ b/tests/test-data/bridges/moderationBridge.ts @@ -14,4 +14,12 @@ export class TestsModerationBridge extends ModerationBridge { public dismissReportsByUserId(userId: IUser['id'], reason: string, action: string, appId: string): Promise { throw new Error('Method not implemented.'); } + + public addRepRoles(appId: string): Promise { + throw new Error('Method not implemented.'); + } + + public addRepRolePermissions(appId: string): Promise { + throw new Error('Method not implemented.'); + } }