UNPKG

xrpkmams

Version:
80 lines (79 loc) 2.71 kB
/** * Events that Pluto Multi-App sends to all running XRPKs * Subscribe to these events with PMAEventHandler.addEventListener() */ export declare enum PMAEventType { appAdded = "plutomultiapp-event-app-added", appRemoved = "plutomultiapp-event-app-removed", conversationUserUpdate = "plutomultiapp-event-conversation-user-update", promiseResponse = "plutomultiapp-event-promise-response" } /** * Events that can be sent to Pluto Multi-App from an XRPK * @disclaimer Not intended to be used directly. Use the provided public functions to send events to Pluto Multi-App */ export declare enum XRPKEventType { launchXrpk = "launch-xrpk", removeXrpk = "remove-xrpk", getAppList = "retrieve-app-list" } export declare const XRPKEvent = "xrpk-message"; interface AppAddedArgs { name: string; uuid: string; deviceId: string; } interface AppRemovedArgs { name: string; uuid: string; } interface ConversationUserUpdateArgs { conversationId: string; localUserId: string; users: [object]; } interface Callback { (args: AppAddedArgs | AppRemovedArgs | ConversationUserUpdateArgs | null): void; } /** * Pluto Multi App Event Handler (Message System) * Use this class to send and receive events messages to and from Pluto Multi App */ export default class PMAEventHandler { private _appId; private _eventHandler; private _openPromises; constructor(); /** * Get the app ID of this XRPK, provided by Pluto Multi-App */ get appId(): string; /** * Add an event listenter for Pluto Multi-App Events * @param type The `PlutoMAEventType` to subscribe to * @param callback The callback to run when the event is receieved */ addEventListener(type: PMAEventType, callback: Callback): void; /** * Request to launch an XRPK in Pluto Multi-app * @param linkUrl The url of the XRPK. Must link directly to the file (ie. .wbn file) * @returns A promise once a response is receieved from Pluto Multi-App */ launchXrpkInChimera(linkUrl: string): Promise<unknown>; /** * Request to remove an XRPK in Pluto Multi-app * @param appIdToRemove The app ID of the app to be removed * @returns A promise once a response is receieved from Pluto Multi-App */ removeXrpk(appIdToRemove: string): Promise<unknown>; /** * Get the current app list from Pluto Multi-app * @return A promise that when resolved includes the app list * @returns A promise once a response is receieved from Pluto Multi-App */ retrieveAppList(): Promise<unknown>; private handleResponse; private generateResponseId; private isIframe; } export {};