interface IRoomMap { [key: string]: Room; } interface IMemberMep { [key: string]: ContactInfo; } class DataManager implements absSpartan.IFrontendServerListener { /* private static _instance: DataManager; public static getInstance(): DataManager { if (this._instance === null || this._instance === undefined) { this._instance = new DataManager(); } return this._instance; } */ public myProfile: User; public orgGroups: IRoomMap = {}; public projectBaseGroups: IRoomMap = {}; public privateGroups: IRoomMap = {}; public privateChats: IRoomMap = {}; public orgMembers: IMemberMep = {}; public isOrgMembersReady: boolean = false; public companyInfo: CompanyInfo; public onCompanyInfoReady: () => void; public onMyProfileReady: (dataManager: DataManager) => void; public onOrgGroupDataReady: () => void; public onProjectBaseGroupsDataReady: () => void; public onPrivateGroupsDataReady: () => void; public onContactsDataReady: () => void; //@ Profile... public setMyProfile(data: any) { this.myProfile = JSON.parse(JSON.stringify(data)); if (!!this.onMyProfileReady) this.onMyProfileReady(this); } public getMyProfile(): User { return this.myProfile; } public isMySelf(uid: string): boolean { if (uid === this.myProfile._id) { return true; } else { return false; } } /** * RoomAccess... */ public getRoomAccess(): RoomAccessData[] { return this.myProfile.roomAccess; } public setRoomAccessForUser(data) { if(!!data.roomAccess) { this.myProfile.roomAccess = JSON.parse(JSON.stringify(data.roomAccess)); console.info('set user roomAccess info.'); } } public updateRoomAccessForUser(data) { let arr: Array = JSON.parse(JSON.stringify(data.roomAccess)); this.myProfile.roomAccess.forEach(value => { if (value.roomId === arr[0].roomId) { value.accessTime = arr[0].accessTime; return; } }); } public getCompanyInfo() { return this.companyInfo; } public setCompanyInfo(data: any) { this.companyInfo = JSON.parse(JSON.stringify(data)); if(!!this.onCompanyInfoReady) { this.onCompanyInfoReady(); } } //