Conversation
* Apps.engine.ui (#131) * Add interfaces IExternalComponent and IExternalComponentExtend * Add externalComponents property for IConfigurationExtend * export IExternalComponent * Add interface IExternalComponentLocationOptions * implement the interface IExternalComponentsExtend * export ExternalComponentsExtend * Add externalComponentManager for AppManager * implement AppExternalComponentManager * Implement IExternalComponentBridge * Add getExternalComponentBridge method for AppBridges * export AppExternalComponentManager * Update getConfigurationExtend method for AppAccessorManager * [TEST] Update appBridge and add externalComponentBridge * Update related test scripts * Remove IExternalComponentBridge interface * AppExternalComponentManager maintains the list of all registered components itself * Update test scripts * Add webhooks interface for the external component * Update the interface IExternalComponent * Add description field to the interface IExternalComponent * Apps.engine.ui.sdk (#132) * update IWebHooks interface * Add util randomString * add AppEmbeddedSDK * move constants to src/client/constants directory * separate initListener from call method * rename initListener to init * Bump alpha version * Change version checking function to allow pre-release tags * Add go-publish-alpha npm script * Bump alpha version * Add options for http requests * Add Livechat functionality * Add further integration with Livechat * Refactor minor inconsistency * Formatting improvement * Add createToken method to LivechatCreator * Add file property to message interface * Add types to compiler option to allow usage of Buffer type * Add livechat reader getter to read interface * Add Upload reader * Update visitor interface * 1.6.0-beta.0 * Validate the LIVE_CHAT rooms correctly * Update version for CI * Access livechat room’s deparment data (#142) * Revert "Change version checking function to allow pre-release tags" This reverts commit 0b88a18. * 1.7.0-alpha * Add missing unregister component method (#144) * chore: change comment style to obtain VS Code Intellisense * feat: add unregisterComponent method We made follwing changes for the AppExternalComponentManager: * add new private property - appTouchedComponents * add new public method unregisterComponent * add new public method getExternalComponent * Add unregisterComponent in the lifecycle methods We need to call unregisterComponent method to remove the corresponding external components from the providedComponents when following AppManager's methods are called: * `unload` is called * `disable` is called <-> Disable an app * `remove` is called <-> Uninstall an app * `updateAppsMarketplaceInfo` is called and validateLicense not pass * `initializeApp` is called and validateLicense not pass * `enableApp` is called but is not success * Add new AppExternalComponentManager method purgeComponent when remove an app from the system, we need delete its external component from both providedComponents map set and appTouchedCompoents map set. * fix: new deployed app registers externalComponents automatically since the new deployed app will try to register their externalComponent when the `initializeApp` method of AppManager is called. This is not expected behavior. We introduce a new parameter `addToProvidedComponents` for the method `registerComponent` to handle the above problem. Without specifying `registerComponent` to true, the app only "declares" it touched the external component when it is initialized. Only if the `enableApp` method is called, the external component will truly added to providedComponents map set, which means we can access it in the `Game Center`. * Add new location to the external components called MODAL (#137) * Add new location to external components * MODAL (new) * update enum ExternalComponentLocation * Update external component configration (#134) * update IWebHooks interface * Add util randomString * add AppEmbeddedSDK * move constants to src/client/constants directory * separate initListener from call method * rename initListener to init * add appId to IExternalComponent interface * Rename the client sdk to state what it is and improve the documentation * Add interfaces IUserInfo and IRoomInfo * Add documentation for the public methods * getUserInfo * getRoomInfo * Rename AppEmbeddedSDK to AppClientEmbeddedSDK * rename to make sure others can see that it's for client-side * add the class documentation for the AppClientEmbeddedSDK * Rename the AppClientEmbeddedSDK methods * Rename to make sure others can see it's for client-side * Add documentation for the IClientRoomInfo and IClientInfo interfaces * Rename external component pieces to be consistent in wording & logic * remove tests externalComponentBridge * remove the extra blank line * fix typos and add necessary blank lines * fix a grammar error in comments * Rename names to avoid confusions * rename IExternalComponentsExtend to IExternalComponentExtend * rename externalComponents to externalComponent * Add documentation to register external components method (#156) * Add documentation to register method * wording changes for IExternalComponentExtend * Merge from 'master' and bump to 1.8.0-beta * Bump to 1.8.0-alpha * Support multiple external components per app (#150) * Revert "Rename names to avoid confusions" This reverts commit d444646. * support multiple external components per app * Add error handlers for AppExternalComponentManager * Add unit tests for two new errors * ExternalComponentAlreadyTouchedError * ExternalComponentNotMatchWithAppError * Add getters for AppExternalComponentManager * Add unit tests for AppExternalComponentManager * did some changes to AppExternalComponentManager according to tests * fix a serious logic error * compare objects after serialization * add space before parenttheses * Modify documentation to state the name unique * Redesign getExternalComponents * Rename providedExternalComponents to registeredExternalComponents * Redesign getExternalComponents * Remove ExternalComponentAlreadyTouchedError * overwrite an external component with the same name * Remove ExternalComponentNotMatchWithAppError * Because of the caller of the method addExternalComponent is apps-engine. So we can trust the appId provided. * Always overwrite the externalComponent.appId to the appId via the method addExternalComponent * Add external components only if it is not empty * Add a new public method getProvidedComponents * Make sure the return is an array * Move external component host logic (#169) * [ALPHA] Move host logic into apps-engine repo * Rename EClientEmbeddedSDKActions * Remove the word `embedded` from client SDK files * Rename the client SDK to AppsEngineClient * Redesign external component webhooks (#168) * Remove IWebHooks * Remove IWebHooks * Remove webhooks options from IExternalComponentOptions and redesign it Introduce state for external components Add IPreExternalComponentOpenedPrevent handler Add IPostExternalComponentOpened handler * add accessors for IPreExternalComponentOpenedPrevent handler * Add IPostExternalComponentOpened handler Add IPostExternalComponentClosed handler Remove IPreExternalComponentOpenedPrevent * export modules * Update metadata AppMethod * Update AppImplements * Add methods to AppListenerManager * Remove IWebHooks * Remove IWebHooks * Remove webhooks options from IExternalComponentOptions and redesign it Introduce state for external components Add IPreExternalComponentOpenedPrevent handler Add IPostExternalComponentOpened handler * add accessors for IPreExternalComponentOpenedPrevent handler * Add IPostExternalComponentOpened handler Add IPostExternalComponentClosed handler Remove IPreExternalComponentOpenedPrevent * export modules * Update metadata AppMethod * Update AppImplements * Add methods to AppListenerManager * rebase onto move-host-logic * Remove check methods from event handlers * Rename a few interfaces * Rename a few interfaces * Renamings * Refactor * Remove unused files * Make AppsEngineUIClient use the MESSAGE_ID constant * Add the command `bundle` for bundling apps engine ui client (#182) * Add the command `bundle` for bundling SDK * Bundle sdk before publishing * Update circleci node version to the same as Rocket.Chat * Bump beta version * Bump version * Definition bump * Beta version * Add beta publishing script * 1.9.0 * 1.10.0-beta * 1.10.0-alpha * Bump beta version * Fix lint * Fix errors * Bump alpha version * Bump definition version * Bump version to 1.13.0-alpha * Beta (1.12.0) (#205) * UIKit (#184) * Auto create user for app during installation Co-authored-by: Shiqi Mei <shiqi.mei@lolimay.cn> Co-authored-by: Upendra Reddy <upendrareddy2511@gmail.com> Co-authored-by: Diego Sampaio <chinello@gmail.com> Co-authored-by: Guilherme Gazzo <guilhermegazzo@gmail.com> * 1.12.0 * 1.13.0-beta Co-authored-by: lolimay <lolimay@lolimay.cn> Co-authored-by: Rodrigo Nascimento <rodrigoknascimento@gmail.com> Co-authored-by: Shiqi Mei <shiqi.mei@rocket.chat> Co-authored-by: Shiqi Mei <shiqi.mei@lolimay.cn> Co-authored-by: Upendra Reddy <upendrareddy2511@gmail.com> Co-authored-by: Diego Sampaio <chinello@gmail.com> Co-authored-by: Guilherme Gazzo <guilhermegazzo@gmail.com>
Codecov Report
@@ Coverage Diff @@
## alpha #248 +/- ##
==========================================
+ Coverage 53.25% 55.02% +1.76%
==========================================
Files 74 82 +8
Lines 2704 2866 +162
Branches 398 406 +8
==========================================
+ Hits 1440 1577 +137
- Misses 1264 1289 +25
Continue to review full report at Codecov.
|
f23b8cf to
d2deb7f
Compare
|
This was automatically closed when I deleted the previous |
* deprecate the old ILivechatRoomClosedHandler and apply IPostLivechatRoomClosed interface instead
d-gubert
left a comment
There was a problem hiding this comment.
Brought a few items to discussion :)
Another question, did the Omnichannel team get to test these events and ensure they fit their needs?
Co-Authored-By: Douglas Gubert <d-gubert@users.noreply.github.com>
|
|
Co-Authored-By: Douglas Gubert <d-gubert@users.noreply.github.com>
Co-Authored-By: Douglas Gubert <d-gubert@users.noreply.github.com>
Co-Authored-By: Douglas Gubert <d-gubert@users.noreply.github.com>
Co-Authored-By: Douglas Gubert <d-gubert@users.noreply.github.com>
Co-Authored-By: Douglas Gubert <d-gubert@users.noreply.github.com>
Co-Authored-By: Douglas Gubert <d-gubert@users.noreply.github.com>
Co-Authored-By: Douglas Gubert <d-gubert@users.noreply.github.com>
Yeah, I agree. Hi @renatobecker. Can you take a look at these new APIs to make sure they are working? Below is a minimal app that I do tests locally: import {
IAppAccessors,
IHttp,
ILogger,
IPersistence,
IRead,
} from '@rocket.chat/apps-engine/definition/accessors';
import { App } from '@rocket.chat/apps-engine/definition/App';
import { ILivechatEventContext, ILivechatRoom, ILivechatRoomClosedHandler, IPostLivechatAgentAssigned, IPostLivechatAgentUnassigned, IPostLivechatRoomClosed, IPostLivechatRoomStarted } from '@rocket.chat/apps-engine/definition/livechat';
import { IAppInfo } from '@rocket.chat/apps-engine/definition/metadata';
export class LivechatTestingApp extends App implements IPostLivechatAgentAssigned, ILivechatRoomClosedHandler, IPostLivechatAgentUnassigned, IPostLivechatRoomStarted, IPostLivechatRoomClosed {
constructor(info: IAppInfo, logger: ILogger, accessors: IAppAccessors) {
super(info, logger, accessors);
}
public async executePostLivechatAgentAssigned(data: ILivechatEventContext, read: IRead, http: IHttp, persistence: IPersistence) {
console.log('executePostLivechatAgentAssigned', { data });
}
public async executePostLivechatAgentUnassigned(data: ILivechatEventContext, read: IRead, http: IHttp, persistence: IPersistence) {
console.log('executePostLivechatAgentUnassigned', { data });
}
public async executePostLivechatRoomStarted(data: ILivechatRoom, read: IRead, http: IHttp, persistence: IPersistence) {
console.log('executePostLivechatRoomStarted', { data });
}
public async executePostLivechatRoomClosed(data: ILivechatRoom, read: IRead, http: IHttp, persistence: IPersistence) {
console.log('executePostLivechatRoomClosed', { data });
}
/**
* @deprecated please prefer using execute executePostLivechatRoomClosed
*/
public async executeLivechatRoomClosedHandler(data: ILivechatRoom, read: IRead, http: IHttp, persistence: IPersistence) {
console.log('executeLivechatRoomClosedHandler', { data });
}
} |
Hi @lolimay sure thing, let me test these new event handlers and give you feedback. |
|
@lolimay and @d-gubert, Congrats! 🥇 👍 |
Co-Authored-By: Renato Becker <renato.augusto.becker@gmail.com>
What? ⛵
Why? 🤔
Implement partial requirements described in the issue #234
Links 🌎
https://app.asana.com/0/633285093795758/1165026712648489/f
RocketChat/Rocket.Chat#17033
PS 👀