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) {