agora-edu-core
Version:
Core APIs for building an online classroom
181 lines (180 loc) • 4.76 kB
TypeScript
import { AGEventEmitter, AgoraRteScene, Logger } from 'agora-rte-sdk';
import { EduClassroomConfig } from '../../../../configs';
import { EduApiService } from '../../../../services/api';
import { AgoraWidgetMessageListener, AgoraWidgetStateListener } from './type';
export declare class AgoraWidgetController {
private _scene;
private _api;
private _stateListeners;
logger: Logger;
private _eventBus;
private _zIndexController;
private _widgetIds;
private _cache;
constructor(_scene: AgoraRteScene, _api: EduApiService, _stateListeners: AgoraWidgetStateListener[]);
/**
* widget消息总线
*/
get eventBus(): AGEventEmitter;
/**
* 当前存在的 Widget 实例ID列表
*/
get widgetIds(): string[];
/**
* 层级控制器
*/
get zIndexController(): AgoraWidgetZIndexController;
/**
* 房间配置
*/
get classroomConfig(): EduClassroomConfig;
/**
* 添加一个组件状态监听器
* @param listener
*/
/** @en
*
* @param listener
*/
addWidgetStateListener(listener: AgoraWidgetStateListener): void;
/**
* 移除一个组件状态监听器
* @param listener
*/
removeWidgetStateListener(listener: AgoraWidgetStateListener): void;
/**
* 向指定 Widget 发送消息
* @param toWidgetId
* @param messageType
* @param args
*/
sendMessage(toWidgetId: string, messageType: string, message?: unknown): void;
/**
* 增加一个消息监听器
* @param listener
*/
addWidgetMessageListener(listener: AgoraWidgetMessageListener): void;
/**
* 移除一个消息监听器
* @param listener
*/
removeWidgetMessageListener(listener: AgoraWidgetMessageListener): void;
/**
* 广播消息
*/
broadcast(messageType: string, message?: unknown): void;
/**
* 监听广播消息
*/
addBroadcastListener(listener: Omit<AgoraWidgetMessageListener, 'widgetId'>): void;
/**
* 移除一个广播消息监听器
*/
removeBroadcastListener(listener: Omit<AgoraWidgetMessageListener, 'widgetId'>): void;
/**
* 设置 widget 为活跃
* @param widgetId
* @param extra
* @returns
*/
setWidegtActive(widgetId: string, props?: any, ownerUserUuid?: string): Promise<{
data: any;
}>;
/**
* 设置 widget 为不活跃
* @param widgetId
* @returns
*/
setWidgetInactive(widgetId: string, props?: any): Promise<{
data: any;
}>;
/**
* 删除房间 Widget
* @param widgetId
* @param keys
* @returns
*/
deleteWidget(widgetId: string): Promise<{
data: any;
}>;
/**
* 删除用户属性字段
* @param widgetId
* @param keys
* @returns
*/
removeWidgetUserProperties(widgetId: string, keys?: string[]): Promise<{
data: any;
}>;
/**
* 删除扩展信息字段
* @param widgetId
* @param keys
* @returns
*/
removeWidgetExtraProperties(widgetId: string, keys?: string[]): Promise<{
data: any;
}>;
/**
* 更新 widget 属性
* @param widgetId
* @param props
* @returns
*/
updateWidgetProperties(widgetId: string, props: any): Promise<{
data: any;
}>;
/**
* 更新 widget 用户属性
* @param widgetId
* @param props
*/
updateWidgetUserProperties(widgetId: string, props: any): void;
/**
* 销毁
*/
destroy(): void;
/**
* 获取 Widget 属性
* @param widgetId
* @returns
*/
getWidgetProperties(widgetId: string): any;
/**
* 获取 Widget 用户属性
* @param widgetId
* @returns
*/
getWidgetUserProperties(widgetId: string): any;
/**
* 获取 Widget 轨迹同步信息
* @param widgetId
* @returns
*/
getWidgetTrack(widgetId: string): any;
/**
* 获取 Widget 状态
* @param widgetId
*/
getWidgetState(widgetId: string): any;
private _addEventListener;
private _removeEventListener;
private _handleWidgetStateChange;
private _handleWidgetPropertiesChange;
private _handleWidgetUserPropertiesChange;
private _handleWidgetTrackChange;
private _extractProps;
private _compareToPrevious;
private _clearCache;
private _handleRoomPropertiesChange;
private _handleUserPropertiesChange;
private _updateBatchUserProperties;
private _handleUserAdded;
}
declare class AgoraWidgetZIndexController {
private _latestZIndex;
incrementZIndex(): number;
get latestZIndex(): number;
setZIndex(zIndex: number): void;
}
export {};