Skip to content

Commit

Permalink
Merge c7e7cf3 into e8aba2e
Browse files Browse the repository at this point in the history
  • Loading branch information
lijiarui committed Feb 28, 2017
2 parents e8aba2e + c7e7cf3 commit ea20200
Showing 1 changed file with 23 additions and 8 deletions.
31 changes: 23 additions & 8 deletions src/room.ts
Expand Up @@ -14,9 +14,9 @@ type RoomObj = {
encryId: string,
topic: string,
ownerUin: number,
memberList: Contact[],
nameMap: Map<string, string>,
aliasMap: Map<string, string>,
memberList?: Contact[],
nameMap?: Map<string, string>,
aliasMap?: Map<string, string>,
}

type NameType = 'name' | 'alias'
Expand Down Expand Up @@ -130,11 +130,17 @@ export class Room extends EventEmitter implements Sayable {
const data = await contactGetter(this.id)
log.silly('Room', `contactGetter(${this.id}) resolved`)
this.rawObj = data
if (!this.rawObj.MemberList) {
this.rawObj.MemberList = []
}
await this.readyAllMembers(this.rawObj.MemberList)
this.obj = this.parse(this.rawObj)
if (!this.obj) {
throw new Error('no this.obj set after contactGetter')
}
if (!this.obj.memberList) {
this.obj.memberList = []
}
await Promise.all(this.obj.memberList.map(c => c.ready(contactGetter)))

return
Expand Down Expand Up @@ -204,6 +210,16 @@ export class Room extends EventEmitter implements Sayable {
return null
}

if (!rawObj.MemberList) {
return {
id: rawObj.UserName,
encryId: rawObj.EncryChatRoomId, // ???
topic: rawObj.NickName,
ownerUin: rawObj.OwnerUin,
memberList: [],
}
}

const memberList = this.parseMemberList(rawObj.MemberList)
const nameMap = this.parseMap(rawObj.MemberList, 'name')
const aliasMap = this.parseMap(rawObj.MemberList, 'alias')
Expand All @@ -213,10 +229,9 @@ export class Room extends EventEmitter implements Sayable {
encryId: rawObj.EncryChatRoomId, // ???
topic: rawObj.NickName,
ownerUin: rawObj.OwnerUin,

memberList,
nameMap,
aliasMap,
memberList: memberList,
nameMap: nameMap,
aliasMap: aliasMap,
}
}

Expand Down Expand Up @@ -352,7 +367,7 @@ export class Room extends EventEmitter implements Sayable {
}

public alias(contact: Contact): string | null {
if (!this.obj) {
if (!this.obj || !this.obj.aliasMap) {
return null
}
return this.obj.aliasMap[contact.id] || null
Expand Down

0 comments on commit ea20200

Please sign in to comment.