From d95384679587be7401d7bdd847d2eec02bb08171 Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Tue, 9 Jul 2024 21:13:26 -0300 Subject: [PATCH 01/14] 1.44.0-alpha --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 05f0aa3c7..dbb633cb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/apps-engine", - "version": "1.43.0", + "version": "1.44.0-alpha", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d12af61f7..a90946038 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/apps-engine", - "version": "1.43.0", + "version": "1.44.0-alpha", "description": "The engine code for the Rocket.Chat Apps which manages, runs, translates, coordinates and all of that.", "main": "index", "typings": "index", From dfcbd7adb872f82999dd2c7b63af4484e9197651 Mon Sep 17 00:00:00 2001 From: gabriellsh <40830821+gabriellsh@users.noreply.github.com> Date: Wed, 10 Jul 2024 11:24:23 -0300 Subject: [PATCH 02/14] feat: include removedBy to IUserLeaveContext (#779) --- src/definition/rooms/IRoomUserLeaveContext.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/definition/rooms/IRoomUserLeaveContext.ts b/src/definition/rooms/IRoomUserLeaveContext.ts index 0c9caab0a..9fe153bc8 100644 --- a/src/definition/rooms/IRoomUserLeaveContext.ts +++ b/src/definition/rooms/IRoomUserLeaveContext.ts @@ -15,4 +15,9 @@ export interface IRoomUserLeaveContext { * The room that the user is leaving */ room: IRoom; + + /** + * The user that removed the room member + */ + removedBy?: IUser; } From becd40f0cca516b8003b8a285d2e6f42df9bb719 Mon Sep 17 00:00:00 2001 From: gabriellsh <40830821+gabriellsh@users.noreply.github.com> Date: Wed, 10 Jul 2024 19:24:10 -0300 Subject: [PATCH 03/14] feat: add rooms bridge method to remove users from a room (#776) --- src/definition/accessors/IModifyDeleter.ts | 2 ++ src/server/accessors/ModifyDeleter.ts | 15 +++++++++++++++ src/server/bridges/RoomBridge.ts | 8 ++++++++ tests/test-data/bridges/roomBridge.ts | 4 ++++ 4 files changed, 29 insertions(+) diff --git a/src/definition/accessors/IModifyDeleter.ts b/src/definition/accessors/IModifyDeleter.ts index 01b4c2a78..7d1103ba1 100644 --- a/src/definition/accessors/IModifyDeleter.ts +++ b/src/definition/accessors/IModifyDeleter.ts @@ -7,4 +7,6 @@ export interface IModifyDeleter { deleteUsers(appId: Exclude, userType: UserType.APP | UserType.BOT): Promise; deleteMessage(message: IMessage, user: IUser): Promise; + + removeUsersFromRoom(roomId: string, usernames: Array): Promise; } diff --git a/src/server/accessors/ModifyDeleter.ts b/src/server/accessors/ModifyDeleter.ts index 8c4b441a8..81c4f0fa1 100644 --- a/src/server/accessors/ModifyDeleter.ts +++ b/src/server/accessors/ModifyDeleter.ts @@ -17,4 +17,19 @@ export class ModifyDeleter implements IModifyDeleter { public async deleteMessage(message: IMessage, user: IUser): Promise { return this.bridges.getMessageBridge().doDelete(message, user, this.appId); } + + /** + * Removes `usernames` from the room's member list + * + * For performance reasons, it is only possible to remove 50 users in one + * call to this method. Removing users is an expensive operation due to the + * amount of entity relationships that need to be modified. + */ + public async removeUsersFromRoom(roomId: string, usernames: Array) { + if (usernames.length > 50) { + throw new Error('A maximum of 50 members can be removed in a single call'); + } + + return this.bridges.getRoomBridge().doRemoveUsers(roomId, usernames, this.appId); + } } diff --git a/src/server/bridges/RoomBridge.ts b/src/server/bridges/RoomBridge.ts index 677620283..b5d51c473 100644 --- a/src/server/bridges/RoomBridge.ts +++ b/src/server/bridges/RoomBridge.ts @@ -91,6 +91,12 @@ export abstract class RoomBridge extends BaseBridge { } } + public async doRemoveUsers(roomId: string, usernames: Array, appId: string): Promise { + if (this.hasWritePermission(appId)) { + return this.removeUsers(roomId, usernames, appId); + } + } + protected abstract create(room: IRoom, members: Array, appId: string): Promise; protected abstract getById(roomId: string, appId: string): Promise; @@ -123,6 +129,8 @@ export abstract class RoomBridge extends BaseBridge { protected abstract getLeaders(roomId: string, appId: string): Promise>; + protected abstract removeUsers(roomId: string, usernames: Array, appId: string): Promise; + private hasWritePermission(appId: string): boolean { if (AppPermissionManager.hasPermission(appId, AppPermissions.room.write)) { return true; diff --git a/tests/test-data/bridges/roomBridge.ts b/tests/test-data/bridges/roomBridge.ts index c25edbb4f..b2c8f5031 100644 --- a/tests/test-data/bridges/roomBridge.ts +++ b/tests/test-data/bridges/roomBridge.ts @@ -55,4 +55,8 @@ export class TestsRoomBridge extends RoomBridge { public getOwners(roomId: string, appId: string): Promise> { throw new Error('Method not implemented.'); } + + public removeUsers(roomId: string, usernames: string[], appId: string): Promise { + throw new Error('Method not implemented'); + } } From c15cfebf16da764663eebe87dc935ac076bd132e Mon Sep 17 00:00:00 2001 From: Kevin Aleman Date: Thu, 11 Jul 2024 15:16:51 -0600 Subject: [PATCH 04/14] feat: `onUpdate` hook for apps (#778) Co-authored-by: Douglas Gubert --- deno-runtime/deno.lock | 1 + deno-runtime/handlers/app/handleOnUpdate.ts | 30 +++++++++++++++++++ deno-runtime/handlers/app/handler.ts | 4 +++ src/definition/App.ts | 8 +++++ src/definition/accessors/IAppUpdateContext.ts | 6 ++++ src/definition/accessors/index.ts | 1 + src/definition/metadata/AppMethod.ts | 1 + src/server/AppManager.ts | 26 +++++++++++++++- 8 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 deno-runtime/handlers/app/handleOnUpdate.ts create mode 100644 src/definition/accessors/IAppUpdateContext.ts diff --git a/deno-runtime/deno.lock b/deno-runtime/deno.lock index ebc8c3e97..57cc114d2 100644 --- a/deno-runtime/deno.lock +++ b/deno-runtime/deno.lock @@ -89,6 +89,7 @@ "https://deno.land/std@0.203.0/testing/_test_suite.ts": "30f018feeb3835f12ab198d8a518f9089b1bcb2e8c838a8b615ab10d5005465c", "https://deno.land/std@0.203.0/testing/bdd.ts": "3f446df5ef8e856a869e8eec54c8482590415741ff0b6358a00c43486cc15769", "https://deno.land/std@0.203.0/testing/mock.ts": "6576b4aa55ee20b1990d656a78fff83599e190948c00e9f25a7f3ac5e9d6492d", + "https://deno.land/std@0.216.0/io/types.ts": "748bbb3ac96abda03594ef5a0db15ce5450dcc6c0d841c8906f8b10ac8d32c96", "https://deno.land/std@0.216.0/io/write_all.ts": "24aac2312bb21096ae3ae0b102b22c26164d3249dff96dbac130958aa736f038" } } diff --git a/deno-runtime/handlers/app/handleOnUpdate.ts b/deno-runtime/handlers/app/handleOnUpdate.ts new file mode 100644 index 000000000..f21e4f947 --- /dev/null +++ b/deno-runtime/handlers/app/handleOnUpdate.ts @@ -0,0 +1,30 @@ +import type { App } from '@rocket.chat/apps-engine/definition/App.ts'; + +import { AppObjectRegistry } from '../../AppObjectRegistry.ts'; +import { AppAccessorsInstance } from '../../lib/accessors/mod.ts'; + +export default async function handleOnUpdate(params: unknown): Promise { + const app = AppObjectRegistry.get('app'); + + if (typeof app?.onUpdate !== 'function') { + throw new Error('App must contain an onUpdate function', { + cause: 'invalid_app', + }); + } + + if (!Array.isArray(params)) { + throw new Error('Invalid params', { cause: 'invalid_param_type' }); + } + + const [context] = params as [Record]; + + await app.onUpdate( + context, + AppAccessorsInstance.getReader(), + AppAccessorsInstance.getHttp(), + AppAccessorsInstance.getPersistence(), + AppAccessorsInstance.getModifier(), + ); + + return true; +} diff --git a/deno-runtime/handlers/app/handler.ts b/deno-runtime/handlers/app/handler.ts index 16144ce6d..2a44f34cb 100644 --- a/deno-runtime/handlers/app/handler.ts +++ b/deno-runtime/handlers/app/handler.ts @@ -14,6 +14,7 @@ import handleOnSettingUpdated from './handleOnSettingUpdated.ts'; import handleListener from '../listener/handler.ts'; import handleUIKitInteraction, { uikitInteractions } from '../uikit/handler.ts'; import { AppObjectRegistry } from '../../AppObjectRegistry.ts'; +import handleOnUpdate from './handleOnUpdate.ts'; export default async function handleApp(method: string, params: unknown): Promise { const [, appMethod] = method.split(':'); @@ -83,6 +84,9 @@ export default async function handleApp(method: string, params: unknown): Promis case 'onSettingUpdated': result = await handleOnSettingUpdated(params); break; + case 'onUpdate': + result = await handleOnUpdate(params); + break; default: throw new JsonRpcError('Method not found', -32601); } diff --git a/src/definition/App.ts b/src/definition/App.ts index f0ca41664..6637a25c1 100644 --- a/src/definition/App.ts +++ b/src/definition/App.ts @@ -10,6 +10,7 @@ import type { IModify, IPersistence, IRead, + IAppUpdateContext, } from './accessors'; import { AppStatus } from './AppStatus'; import type { IApp } from './IApp'; @@ -181,6 +182,13 @@ export abstract class App implements IApp { */ public async onInstall(context: IAppInstallationContext, read: IRead, http: IHttp, persistence: IPersistence, modify: IModify): Promise {} + /** + * Method which is called when the App is updated and it is called one single time. + * + * This method is NOT called when the App is installed. + */ + public async onUpdate(context: IAppUpdateContext, read: IRead, http: IHttp, persistence: IPersistence, modify: IModify): Promise {} + /** * Method which is called whenever a setting which belongs to this App has been updated * by an external system and not this App itself. The setting passed is the newly updated one. diff --git a/src/definition/accessors/IAppUpdateContext.ts b/src/definition/accessors/IAppUpdateContext.ts new file mode 100644 index 000000000..d0bcf7ea2 --- /dev/null +++ b/src/definition/accessors/IAppUpdateContext.ts @@ -0,0 +1,6 @@ +import type { IUser } from '../users'; + +export interface IAppUpdateContext { + user?: IUser; + oldAppVersion: string; +} diff --git a/src/definition/accessors/index.ts b/src/definition/accessors/index.ts index 64485ab0a..fbc5a6540 100644 --- a/src/definition/accessors/index.ts +++ b/src/definition/accessors/index.ts @@ -1,6 +1,7 @@ export * from './IApiExtend'; export * from './IAppAccessors'; export * from './IAppInstallationContext'; +export * from './IAppUpdateContext'; export * from './IAppUninstallationContext'; export * from './ICloudWorkspaceRead'; export * from './IConfigurationExtend'; diff --git a/src/definition/metadata/AppMethod.ts b/src/definition/metadata/AppMethod.ts index ffe80c4d6..71a6d0e91 100644 --- a/src/definition/metadata/AppMethod.ts +++ b/src/definition/metadata/AppMethod.ts @@ -17,6 +17,7 @@ export enum AppMethod { ONDISABLE = 'onDisable', ONINSTALL = 'onInstall', ONUNINSTALL = 'onUninstall', + ONUPDATE = 'onUpdate', ON_PRE_SETTING_UPDATE = 'onPreSettingUpdate', ONSETTINGUPDATED = 'onSettingUpdated', SETSTATUS = 'setStatus', diff --git a/src/server/AppManager.ts b/src/server/AppManager.ts index bafe0383b..7577ebedb 100644 --- a/src/server/AppManager.ts +++ b/src/server/AppManager.ts @@ -646,7 +646,11 @@ export class AppManager { this.apps.delete(app.getID()); } - public async update(appPackage: Buffer, permissionsGranted: Array, updateOptions = { loadApp: true }): Promise { + public async update( + appPackage: Buffer, + permissionsGranted: Array, + updateOptions: { loadApp?: boolean; user?: IUser } = { loadApp: true }, + ): Promise { const aff = new AppFabricationFulfillment(); const result = await this.getParser().unpackageApp(appPackage); @@ -714,6 +718,8 @@ export class AppManager { .catch(() => {}); } + await this.updateApp(app, updateOptions.user, old.info.version); + return aff; } @@ -921,6 +927,24 @@ export class AppManager { return result; } + private async updateApp(app: ProxiedApp, user: IUser | null, oldAppVersion: string): Promise { + let result: boolean; + + try { + await app.call(AppMethod.ONUPDATE, { oldAppVersion, user }); + + result = true; + } catch (e) { + const status = AppStatus.ERROR_DISABLED; + + result = false; + + await app.setStatus(status); + } + + return result; + } + private async initializeApp(storageItem: IAppStorageItem, app: ProxiedApp, saveToDb = true, silenceStatus = false): Promise { let result: boolean; From 080cfad7570593b688c08173404592089c3d39bd Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Thu, 11 Jul 2024 22:47:33 -0300 Subject: [PATCH 05/14] Revert "Revert "feat: ILivechatCreator `createAndReturnVisitor` method (#771)"" This reverts commit 1f9c85772e4e0751c5e2800d820ee1150b75cd4e. --- src/definition/accessors/ILivechatCreator.ts | 9 +++++++++ src/server/accessors/LivechatCreator.ts | 7 +++++++ src/server/bridges/LivechatBridge.ts | 15 +++++++++++++++ tests/test-data/bridges/livechatBridge.ts | 4 ++++ 4 files changed, 35 insertions(+) diff --git a/src/definition/accessors/ILivechatCreator.ts b/src/definition/accessors/ILivechatCreator.ts index def2a9857..8524ba251 100644 --- a/src/definition/accessors/ILivechatCreator.ts +++ b/src/definition/accessors/ILivechatCreator.ts @@ -16,13 +16,22 @@ export interface ILivechatCreator { * @param agent The agent responsible for the room */ createRoom(visitor: IVisitor, agent: IUser, extraParams?: IExtraRoomParams): Promise; + /** + * @deprecated Use `createAndReturnVisitor` instead. * Creates a Livechat visitor * * @param visitor Data of the visitor to be created */ createVisitor(visitor: IVisitor): Promise; + /** + * Creates a Livechat visitor + * + * @param visitor Data of the visitor to be created + */ + createAndReturnVisitor(visitor: IVisitor): Promise; + /** * Creates a token to be used when * creating a new livechat visitor diff --git a/src/server/accessors/LivechatCreator.ts b/src/server/accessors/LivechatCreator.ts index 937827cd8..8cd527159 100644 --- a/src/server/accessors/LivechatCreator.ts +++ b/src/server/accessors/LivechatCreator.ts @@ -12,10 +12,17 @@ export class LivechatCreator implements ILivechatCreator { return this.bridges.getLivechatBridge().doCreateRoom(visitor, agent, this.appId, extraParams); } + /** + * @deprecated Use `createAndReturnVisitor` instead. + */ public createVisitor(visitor: IVisitor): Promise { return this.bridges.getLivechatBridge().doCreateVisitor(visitor, this.appId); } + public createAndReturnVisitor(visitor: IVisitor): Promise { + return this.bridges.getLivechatBridge().doCreateAndReturnVisitor(visitor, this.appId); + } + public createToken(): string { return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); } diff --git a/src/server/bridges/LivechatBridge.ts b/src/server/bridges/LivechatBridge.ts index ea9e50f1b..9fc830767 100644 --- a/src/server/bridges/LivechatBridge.ts +++ b/src/server/bridges/LivechatBridge.ts @@ -50,12 +50,21 @@ export abstract class LivechatBridge extends BaseBridge { } } + /** + * @deprecated please use the `doCreateAndReturnVisitor` method instead. + */ public async doCreateVisitor(visitor: IVisitor, appId: string): Promise { if (this.hasWritePermission(appId, 'livechat-visitor')) { return this.createVisitor(visitor, appId); } } + public async doCreateAndReturnVisitor(visitor: IVisitor, appId: string): Promise { + if (this.hasWritePermission(appId, 'livechat-visitor')) { + return this.createAndReturnVisitor(visitor, appId); + } + } + public async doFindVisitors(query: object, appId: string): Promise> { if (this.hasReadPermission(appId, 'livechat-visitor')) { return this.findVisitors(query, appId); @@ -160,8 +169,14 @@ export abstract class LivechatBridge extends BaseBridge { protected abstract updateMessage(message: ILivechatMessage, appId: string): Promise; + /** + * @deprecated please use `createAndReturnVisitor` instead. + * It returns the created record rather than the ID. + */ protected abstract createVisitor(visitor: IVisitor, appId: string): Promise; + protected abstract createAndReturnVisitor(visitor: IVisitor, appId: string): Promise; + /** * @deprecated This method does not adhere to the conversion practices applied * elsewhere in the Apps-Engine and will be removed in the next major version. diff --git a/tests/test-data/bridges/livechatBridge.ts b/tests/test-data/bridges/livechatBridge.ts index 83eb45e13..27a884ea5 100644 --- a/tests/test-data/bridges/livechatBridge.ts +++ b/tests/test-data/bridges/livechatBridge.ts @@ -33,6 +33,10 @@ export class TestLivechatBridge extends LivechatBridge { throw new Error('Method not implemented'); } + public createAndReturnVisitor(visitor: IVisitor, appId: string): Promise { + throw new Error('Method not implemented'); + } + public transferVisitor(visitor: IVisitor, transferData: ILivechatTransferData, appId: string): Promise { throw new Error('Method not implemented'); } From 40184dde191fd2665be1a381796b5f56810b232c Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Thu, 11 Jul 2024 22:47:52 -0300 Subject: [PATCH 06/14] Revert "Revert "feat: allow custom fields on livechat room creation (#772)"" This reverts commit bebb34b6855460d59d42edbe82559e3f0c667075. --- src/definition/accessors/ILivechatCreator.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/definition/accessors/ILivechatCreator.ts b/src/definition/accessors/ILivechatCreator.ts index 8524ba251..56a3ec17e 100644 --- a/src/definition/accessors/ILivechatCreator.ts +++ b/src/definition/accessors/ILivechatCreator.ts @@ -3,6 +3,9 @@ import type { IUser } from '../users'; export interface IExtraRoomParams { source?: ILivechatRoom['source']; + customFields?: { + [key: string]: unknown; + }; } export interface ILivechatCreator { From b5dcb6d53fc59154bf0d2f64c2459fc292d09f82 Mon Sep 17 00:00:00 2001 From: Pierre Lehnen <55164754+pierre-lehnen-rc@users.noreply.github.com> Date: Wed, 17 Jul 2024 11:55:22 -0300 Subject: [PATCH 07/14] feat: VideoConf Persistent Chat (#783) --- .../builders/VideoConferenceBuilder.ts | 12 ++++++++- .../extenders/VideoConferenceExtend.ts | 6 +++++ ...erenceBuilder.IVideoConferenceBuilder.html | 27 ++++++++++++++++++- ...erenceExtend.IVideoConferenceExtender.html | 15 +++++++++++ ...IVideoConfProvider.IVideoConfProvider.html | 18 +++++++------ ...ideoConference.IDirectVideoConference.html | 12 +++++++-- ...VideoConference.IGroupVideoConference.html | 16 ++++++++--- ...eoConference.ILivechatVideoConference.html | 12 +++++++-- ...ces_IVideoConference.IVideoConference.html | 7 +++++ ...Providers_VideoConfData.VideoConfData.html | 2 +- ...s_VideoConfData.VideoConfDataExtended.html | 2 +- ...AppVideoConference.AppVideoConference.html | 2 +- ...nces_IVideoConference.VideoConference.html | 2 +- .../accessors/IVideoConferenceBuilder.ts | 4 +++ .../accessors/IVideoConferenceExtend.ts | 2 ++ .../videoConfProviders/IVideoConfProvider.ts | 2 ++ .../videoConfProviders/VideoConfData.ts | 4 ++- .../videoConferences/AppVideoConference.ts | 2 +- .../videoConferences/IVideoConference.ts | 1 + .../accessors/VideoConferenceBuilder.ts | 10 +++++++ src/server/accessors/VideoConferenceExtend.ts | 6 +++++ .../accessors/VideoConferenceBuilder.spec.ts | 12 +++++++++ .../accessors/VideoConferenceExtend.spec.ts | 10 +++++++ 23 files changed, 162 insertions(+), 24 deletions(-) diff --git a/deno-runtime/lib/accessors/builders/VideoConferenceBuilder.ts b/deno-runtime/lib/accessors/builders/VideoConferenceBuilder.ts index f29c62504..e617cdddf 100644 --- a/deno-runtime/lib/accessors/builders/VideoConferenceBuilder.ts +++ b/deno-runtime/lib/accessors/builders/VideoConferenceBuilder.ts @@ -9,7 +9,7 @@ const { RocketChatAssociationModel } = require('@rocket.chat/apps-engine/definit RocketChatAssociationModel: typeof _RocketChatAssociationModel; }; -export type AppVideoConference = Pick & { +export type AppVideoConference = Pick & { createdBy: IGroupVideoConference['createdBy']['_id']; }; @@ -28,6 +28,7 @@ export class VideoConferenceBuilder implements IVideoConferenceBuilder { createdBy: data.createdBy, providerName: data.providerName!, title: data.title!, + discussionRid: data.discussionRid, }; return this; @@ -78,6 +79,15 @@ export class VideoConferenceBuilder implements IVideoConferenceBuilder { return this.call.title; } + public setDiscussionRid(rid: AppVideoConference['discussionRid']): IVideoConferenceBuilder { + this.call.discussionRid = rid; + return this; + } + + public getDiscussionRid(): AppVideoConference['discussionRid'] { + return this.call.discussionRid; + } + public getVideoConference(): AppVideoConference { return this.call; } diff --git a/deno-runtime/lib/accessors/extenders/VideoConferenceExtend.ts b/deno-runtime/lib/accessors/extenders/VideoConferenceExtend.ts index ff7265ce7..9616bf619 100644 --- a/deno-runtime/lib/accessors/extenders/VideoConferenceExtend.ts +++ b/deno-runtime/lib/accessors/extenders/VideoConferenceExtend.ts @@ -57,6 +57,12 @@ export class VideoConferenceExtender implements IVideoConferenceExtender { return this; } + public setDiscussionRid(rid: VideoConference['discussionRid']): IVideoConferenceExtender { + this.videoConference.discussionRid = rid; + + return this; + } + public getVideoConference(): VideoConference { return structuredClone(this.videoConference); } diff --git a/docs/interfaces/accessors_IVideoConferenceBuilder.IVideoConferenceBuilder.html b/docs/interfaces/accessors_IVideoConferenceBuilder.IVideoConferenceBuilder.html index 0440dc9fb..a131b64fe 100644 --- a/docs/interfaces/accessors_IVideoConferenceBuilder.IVideoConferenceBuilder.html +++ b/docs/interfaces/accessors_IVideoConferenceBuilder.IVideoConferenceBuilder.html @@ -34,6 +34,7 @@

Properties

Methods

+
+ +
+
  • Defined in src/definition/accessors/IVideoConferenceBuilder.ts:33
  • +
    + +
    +
    + +
    @@ -145,6 +159,7 @@

    kind
  • addUser
  • getVideoConference
  • +
  • setDiscussionRid
  • setEndedAt
  • setEndedBy
  • setProviderData
  • diff --git a/docs/interfaces/videoConfProviders_IVideoConfProvider.IVideoConfProvider.html b/docs/interfaces/videoConfProviders_IVideoConfProvider.IVideoConfProvider.html index c879c0fa8..e7762c464 100644 --- a/docs/interfaces/videoConfProviders_IVideoConfProvider.IVideoConfProvider.html +++ b/docs/interfaces/videoConfProviders_IVideoConfProvider.IVideoConfProvider.html @@ -50,7 +50,7 @@

    Methods

    Properties

    -
    capabilities?: {
        cam?: boolean;
        mic?: boolean;
        title?: boolean;
    }
    +
    capabilities?: {
        cam?: boolean;
        mic?: boolean;
        persistentChat?: boolean;
        title?: boolean;
    }

    Type declaration

      @@ -59,6 +59,8 @@
      Optional
      Optional mic?: boolean
    • +
      Optional persistentChat?: boolean
    • +
    • Optional title?: boolean
    @@ -96,7 +98,7 @@
    persis: Returns Promise<string>
    +
  • Defined in src/definition/videoConfProviders/IVideoConfProvider.ts:54
  • +
  • Defined in src/definition/videoConfProviders/IVideoConfProvider.ts:50
  • Returns Promise<IBlock[]>

    +
  • Defined in src/definition/videoConfProviders/IVideoConfProvider.ts:38
  • Returns Promise<boolean>

    +
  • Defined in src/definition/videoConfProviders/IVideoConfProvider.ts:26
  • Returns Promise<void>

    +
  • Defined in src/definition/videoConfProviders/IVideoConfProvider.ts:29
  • Returns Promise<void>

    +
  • Defined in src/definition/videoConfProviders/IVideoConfProvider.ts:35
  • Returns Promise<void>

    +
  • Defined in src/definition/videoConfProviders/IVideoConfProvider.ts:32
  • +
  • Defined in src/definition/videoConferences/IVideoConference.ts:53
  • url?: string
    +
    + +
    discussionRid?: string
    endedAt?: Date
    +
  • Defined in src/definition/videoConferences/IVideoConference.ts:56
  • +
  • Defined in src/definition/App.ts:22
  • @@ -57,6 +57,7 @@

    Methods

    onPreSettingUpdate onSettingUpdated onUninstall +onUpdate setStatus toJSON
    @@ -84,7 +85,7 @@
    Optional Returns App
    +
  • Defined in src/definition/App.ts:31
  • Methods

    @@ -105,7 +106,7 @@
    environmentRead: Returns Promise<void>
    +
  • Defined in src/definition/App.ts:220
  • +
  • Defined in src/definition/App.ts:139
  • +
  • Defined in src/definition/App.ts:71
  • +
  • Defined in src/definition/App.ts:117
  • +
  • Defined in src/definition/App.ts:98
  • +
  • Defined in src/definition/App.ts:80
  • +
  • Defined in src/definition/App.ts:126
  • +
  • Defined in src/definition/App.ts:135
  • +
  • Defined in src/definition/App.ts:50
  • +
  • Defined in src/definition/App.ts:59
  • +
  • Defined in src/definition/App.ts:108
  • +
  • Defined in src/definition/App.ts:41
  • +
  • Defined in src/definition/App.ts:89
  • +
  • Defined in src/definition/App.ts:147
  • +
  • Defined in src/definition/App.ts:168
  • +
  • Defined in src/definition/App.ts:160
  • +
  • Defined in src/definition/App.ts:183
  • +
  • Defined in src/definition/App.ts:212
  • +
  • Defined in src/definition/App.ts:201
  • +
  • Defined in src/definition/App.ts:176
  • +
    + +
      + +
    • +

      Method which is called when the App is updated and it is called one single time.

      +

      This method is NOT called when the App is installed.

      +
      +
      +

      Parameters

      +
      +

      Returns Promise<void>

      +
    +
  • Defined in src/definition/App.ts:227
  • +
  • Defined in src/definition/App.ts:233
  • +
  • Defined in node_modules/.deno/@types+node@18.19.42/node_modules/@types/node/globals.d.ts:20
  • +
  • Defined in node_modules/.deno/@types+node@18.19.42/node_modules/@types/node/globals.d.ts:20
  • +
  • Defined in node_modules/.deno/@types+node@18.19.42/node_modules/@types/node/globals.d.ts:20
  • +
  • Defined in node_modules/.deno/@types+node@18.19.42/node_modules/@types/node/globals.d.ts:20
  • +
  • Defined in node_modules/.deno/@types+node@18.19.42/node_modules/@types/node/globals.d.ts:20
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -216,6 +217,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IAppInstallationContext.IAppInstallationContext.html b/docs/interfaces/accessors_IAppInstallationContext.IAppInstallationContext.html index eb4ada27d..b9a907227 100644 --- a/docs/interfaces/accessors_IAppInstallationContext.IAppInstallationContext.html +++ b/docs/interfaces/accessors_IAppInstallationContext.IAppInstallationContext.html @@ -72,6 +72,7 @@

  • IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -188,6 +189,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IAppUninstallationContext.IAppUninstallationContext.html b/docs/interfaces/accessors_IAppUninstallationContext.IAppUninstallationContext.html index 14c28cf67..de197eff7 100644 --- a/docs/interfaces/accessors_IAppUninstallationContext.IAppUninstallationContext.html +++ b/docs/interfaces/accessors_IAppUninstallationContext.IAppUninstallationContext.html @@ -72,6 +72,7 @@

    +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -188,6 +189,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IAppUpdateContext.IAppUpdateContext.html b/docs/interfaces/accessors_IAppUpdateContext.IAppUpdateContext.html new file mode 100644 index 000000000..278157f6b --- /dev/null +++ b/docs/interfaces/accessors_IAppUpdateContext.IAppUpdateContext.html @@ -0,0 +1,323 @@ +IAppUpdateContext | Rocket.Chat Apps TypeScript Definition
    +
    + +
    +
    +
    + +
    +

    Hierarchy

    +
      +
    • IAppUpdateContext
    +
    +
    +
    + +
    +
    +

    Properties

    +
    +
    +

    Properties

    +
    + +
    oldAppVersion: string
    +
    + +
    user?: IUser
    +
    + +
    +
    +

    Generated using TypeDoc

    +
    \ No newline at end of file diff --git a/docs/interfaces/accessors_ICloudWorkspaceRead.ICloudWorkspaceRead.html b/docs/interfaces/accessors_ICloudWorkspaceRead.ICloudWorkspaceRead.html index db51c37a1..6ed38c9fa 100644 --- a/docs/interfaces/accessors_ICloudWorkspaceRead.ICloudWorkspaceRead.html +++ b/docs/interfaces/accessors_ICloudWorkspaceRead.ICloudWorkspaceRead.html @@ -95,6 +95,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
    @@ -215,6 +216,7 @@

    messages/IMessageFile

  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IConfigurationExtend.IConfigurationExtend.html b/docs/interfaces/accessors_IConfigurationExtend.IConfigurationExtend.html index 2a18b666f..7488f966d 100644 --- a/docs/interfaces/accessors_IConfigurationExtend.IConfigurationExtend.html +++ b/docs/interfaces/accessors_IConfigurationExtend.IConfigurationExtend.html @@ -143,6 +143,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend @@ -263,6 +264,7 @@

    messages/IMessageFile

  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IConfigurationModify.IConfigurationModify.html b/docs/interfaces/accessors_IConfigurationModify.IConfigurationModify.html index 5321197d2..09ba0757c 100644 --- a/docs/interfaces/accessors_IConfigurationModify.IConfigurationModify.html +++ b/docs/interfaces/accessors_IConfigurationModify.IConfigurationModify.html @@ -96,6 +96,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • @@ -216,6 +217,7 @@

    messages/IMessageFile

  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IDiscussionBuilder.IDiscussionBuilder.html b/docs/interfaces/accessors_IDiscussionBuilder.IDiscussionBuilder.html index 5e7c3421c..8c08836b8 100644 --- a/docs/interfaces/accessors_IDiscussionBuilder.IDiscussionBuilder.html +++ b/docs/interfaces/accessors_IDiscussionBuilder.IDiscussionBuilder.html @@ -662,6 +662,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -782,6 +783,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IEnvironmentRead.IEnvironmentRead.html b/docs/interfaces/accessors_IEnvironmentRead.IEnvironmentRead.html index 68a3f5ea1..5dfaa5844 100644 --- a/docs/interfaces/accessors_IEnvironmentRead.IEnvironmentRead.html +++ b/docs/interfaces/accessors_IEnvironmentRead.IEnvironmentRead.html @@ -110,6 +110,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -230,6 +231,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IEnvironmentWrite.IEnvironmentWrite.html b/docs/interfaces/accessors_IEnvironmentWrite.IEnvironmentWrite.html index f29d83f83..428f4f971 100644 --- a/docs/interfaces/accessors_IEnvironmentWrite.IEnvironmentWrite.html +++ b/docs/interfaces/accessors_IEnvironmentWrite.IEnvironmentWrite.html @@ -85,6 +85,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -205,6 +206,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IEnvironmentalVariableRead.IEnvironmentalVariableRead.html b/docs/interfaces/accessors_IEnvironmentalVariableRead.IEnvironmentalVariableRead.html index 241c74a3e..3af7f6089 100644 --- a/docs/interfaces/accessors_IEnvironmentalVariableRead.IEnvironmentalVariableRead.html +++ b/docs/interfaces/accessors_IEnvironmentalVariableRead.IEnvironmentalVariableRead.html @@ -119,6 +119,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -239,6 +240,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IExternalComponentsExtend.IExternalComponentsExtend.html b/docs/interfaces/accessors_IExternalComponentsExtend.IExternalComponentsExtend.html index cdf22030a..c6ae2d9f4 100644 --- a/docs/interfaces/accessors_IExternalComponentsExtend.IExternalComponentsExtend.html +++ b/docs/interfaces/accessors_IExternalComponentsExtend.IExternalComponentsExtend.html @@ -90,6 +90,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -210,6 +211,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IHttp.IHttp.html b/docs/interfaces/accessors_IHttp.IHttp.html index d933f5019..d386391d8 100644 --- a/docs/interfaces/accessors_IHttp.IHttp.html +++ b/docs/interfaces/accessors_IHttp.IHttp.html @@ -151,6 +151,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -278,6 +279,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IHttp.IHttpExtend.html b/docs/interfaces/accessors_IHttp.IHttpExtend.html index 0057475f2..a600d7281 100644 --- a/docs/interfaces/accessors_IHttp.IHttpExtend.html +++ b/docs/interfaces/accessors_IHttp.IHttpExtend.html @@ -260,6 +260,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -387,6 +388,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IHttp.IHttpPreRequestHandler.html b/docs/interfaces/accessors_IHttp.IHttpPreRequestHandler.html index a9f70e18f..332abdd7e 100644 --- a/docs/interfaces/accessors_IHttp.IHttpPreRequestHandler.html +++ b/docs/interfaces/accessors_IHttp.IHttpPreRequestHandler.html @@ -82,6 +82,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -209,6 +210,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IHttp.IHttpPreResponseHandler.html b/docs/interfaces/accessors_IHttp.IHttpPreResponseHandler.html index 3f0eca2e9..d78577b4c 100644 --- a/docs/interfaces/accessors_IHttp.IHttpPreResponseHandler.html +++ b/docs/interfaces/accessors_IHttp.IHttpPreResponseHandler.html @@ -80,6 +80,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -207,6 +208,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IHttp.IHttpRequest.html b/docs/interfaces/accessors_IHttp.IHttpRequest.html index e5d2335ed..76fe1ed85 100644 --- a/docs/interfaces/accessors_IHttp.IHttpRequest.html +++ b/docs/interfaces/accessors_IHttp.IHttpRequest.html @@ -156,6 +156,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -283,6 +284,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_IHttp.IHttpResponse.html b/docs/interfaces/accessors_IHttp.IHttpResponse.html index 5d5a6071f..563b9f3af 100644 --- a/docs/interfaces/accessors_IHttp.IHttpResponse.html +++ b/docs/interfaces/accessors_IHttp.IHttpResponse.html @@ -108,6 +108,7 @@

    accessors/IAppAccessors
  • accessors/IAppInstallationContext
  • accessors/IAppUninstallationContext
  • +
  • accessors/IAppUpdateContext
  • accessors/ICloudWorkspaceRead
  • accessors/IConfigurationExtend
  • accessors/IConfigurationModify
  • @@ -235,6 +236,7 @@

    messages/IMessageFile
  • messages/IMessageFollowContext
  • messages/IMessagePinContext
  • +
  • messages/IMessageRaw
  • messages/IMessageReaction
  • messages/IMessageReactionContext
  • messages/IMessageReportContext
  • diff --git a/docs/interfaces/accessors_ILivechatCreator.IExtraRoomParams.html b/docs/interfaces/accessors_ILivechatCreator.IExtraRoomParams.html index 09dc7f29f..701eecba9 100644 --- a/docs/interfaces/accessors_ILivechatCreator.IExtraRoomParams.html +++ b/docs/interfaces/accessors_ILivechatCreator.IExtraRoomParams.html @@ -29,12 +29,23 @@

    Theme