diff --git a/src/room.ts b/src/room.ts index ced477c2068d0015b45d411f67d6cd61ef924d29..037d9595cfabcbc617df08ff1d4e202235a5d29b 100644 --- a/src/room.ts +++ b/src/room.ts @@ -120,6 +120,8 @@ export class Room extends EventEmitter implements Sayable { } await Promise.all(this.obj.memberList.map(c => c.ready(contactGetter))) + this.obj.nickMap = this.parseNickMap(this.obj.memberList) + return } catch (e) { @@ -186,14 +188,16 @@ export class Room extends EventEmitter implements Sayable { log.warn('Room', 'parse() on a empty rawObj?') return null } + + const memberList = this.parseMemberList(rawObj.MemberList) + return { id: rawObj.UserName , encryId: rawObj.EncryChatRoomId // ??? , topic: rawObj.NickName , ownerUin: rawObj.OwnerUin - , memberList: this.parseMemberList(rawObj.MemberList) - , nickMap: this.parseNickMap(rawObj.MemberList) + , memberList } } @@ -204,19 +208,16 @@ export class Room extends EventEmitter implements Sayable { return rawMemberList.map(m => Contact.load(m.UserName)) } - private parseNickMap(memberList): Map { + private parseNickMap(memberList: Contact[]): Map { const nickMap: Map = new Map() - let contact if (memberList && memberList.map) { - memberList.forEach(m => { - contact = Contact.load(m.UserName) - + memberList.forEach(contact => { /** * ISSUE #64 emoji need to be striped * ISSUE #104 never use remark name because sys group message will never use that */ - nickMap[m.UserName] = UtilLib.stripEmoji( - m.DisplayName || m.NickName + nickMap[contact.UserName] = UtilLib.stripEmoji( + contact.DisplayName || contact.NickName ) }) }