import { Determinants } from "./determinants/Determinants"; import { ConnectionStatesEnum } from "./enum/ConnectionStates"; import { RoleUserEnum } from "./enum/RoleUserEnum"; import { IContext } from "./interface/IContext"; import { Resources } from "./resources/Resources"; import { AgoraConfigT } from "./type/AgoraConfigT"; export class Context implements IContext{ public resources: Resources = new Resources(); public determinants: Determinants = new Determinants({ Role: RoleUserEnum.Host, Updating: false, ConnectionState: { curState: ConnectionStatesEnum.DISCONNECTED, revState: ConnectionStatesEnum.DISCONNECTED, reason: undefined }, HasAudio: true, HasCamera: false, HasScreen: false, Muted: false, Init:false }); constructor( config:AgoraConfigT ){ if(config.AppId) this.getDeterminants().setAppId(config.AppId); if(config.Uid) this.getDeterminants().setUid(config.Uid); } public getDeterminants(): Determinants { return this.determinants; } public setDeterminants(value: Determinants) { this.determinants = value; } public getResources(): Resources { return this.resources; } public setResources(value : Resources) { this.resources = value; } public canInit() : boolean { if(this.getDeterminants().getInit()){ return false; } return true; } public canRegionChange() : boolean { if(this.getDeterminants().getConnectionState().curState!=ConnectionStatesEnum.DISCONNECTED || !this.getResources().getClient()){ return false; } return true; } public canActiveProxy() : boolean { if(this.getDeterminants().getConnectionState().curState!=ConnectionStatesEnum.DISCONNECTED || !this.getResources().getClient()){ return false; } return true; } public canDisconnect() : boolean { if(!this.getDeterminants().getInit() || !this.getResources().getClient()){ return false; } return true; } public canMute() : boolean { if(this.getDeterminants().getInit()){ return false; } return true; } public canShareCamera() : boolean { if(this.getDeterminants().getConnectionState().curState!=ConnectionStatesEnum.CONNECTED) return false; if(!this.getDeterminants().getInit()) return false; if(this.getDeterminants().getHasScreen()) return false; return true; } public canShareScreen() : boolean { if(this.getDeterminants().getConnectionState().curState!=ConnectionStatesEnum.CONNECTED) return false; if(!this.getDeterminants().getInit()) return false; if(this.getDeterminants().getHasCamera()) return false; return true; } public canChangeRole() : boolean { if(this.getDeterminants().getConnectionState().curState!=ConnectionStatesEnum.DISCONNECTED || !this.getResources().getClient()){ return false; } return true; } }