blob: 09fb76fb60e73c4ae9f2e8529ae7e0e18a5fd1f1 [file] [log] [blame]
import Contact from './Contact.js'
class Conversation {
constructor(id, accountId, members) {
this.id = id
this.accountId = accountId
this.members = members || []
this.messages = []
}
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].contact.getDisplayName()
}
return this.getDisplayUri()
}
getObject(params) {
const members = params.memberFilter ? this.members.filter(params.memberFilter) : this.members
return {
id: this.id,
members: members.map(member => {
const copiedMember = { role: member.role }//Object.assign({}, member);
copiedMember.contact = member.contact.getObject()
return copiedMember
})
}
}
getSummary() {
return this.getObject()
}
getDisplayUri() {
return this.getId() || this.getFirstMember().contact.getUri()
}
getFirstMember() {
return this.members[0]
}
getMembers() {
return this.members
}
addMessage(message) {
this.messages.push(message)
}
}
export default Conversation;