improve conversation view
Change-Id: I63189d0b61d45e659ac7618a977282f7b4500753
diff --git a/model/Conversation.js b/model/Conversation.js
index 8046219..22dc477 100644
--- a/model/Conversation.js
+++ b/model/Conversation.js
@@ -1,27 +1,43 @@
+const Contact = require('./Contact')
+
class Conversation {
- constructor(id, members) {
+ constructor(id, accountId, members) {
this.id = id
+ this.accountId = accountId
this.members = members || []
this.messages = []
}
- static from(object) {
- return new Conversation(object.id, object.members)
+ static from(accountId, object) {
+ return new Conversation(object.id, accountId, object.members.map(member => {
+ member.contact = Contact.from(member.contact)
+ return member
+ }))
+ }
+ static fromSingleContact(accountId, contact) {
+ return new Conversation(undefined, accountId, [{contact}])
}
getId() { return this.id }
+ getAccountId() { return this.accountId }
+
getDisplayName() {
if (this.members.length !== 0) {
- return this.members[0].getDisplayName()
+ return this.members[0].contact.getDisplayName()
}
return this.getDisplayUri()
}
- getObject() {
+ getObject(params) {
+ const members = params.memberFilter ? this.members.filter(params.memberFilter) : this.members
return {
id: this.id,
- members: this.members
+ members: members.map(member => {
+ const copiedMember = { role: member.role }//Object.assign({}, member);
+ copiedMember.contact = member.contact.getObject()
+ return copiedMember
+ })
}
}
@@ -30,7 +46,15 @@
}
getDisplayUri() {
- return this.getId()
+ return this.getId() || this.getFirstMember().contact.getUri()
+ }
+
+ getFirstMember() {
+ return this.members[0]
+ }
+
+ getMembers() {
+ return this.members
}
addMessage(message) {