blob: 98e21dd03f0efaea4579ad4b5f9a36622e9cc727 [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()
}
getDisplayNameNoFallback() {
if (this.members.length !== 0) {
return this.members[0].contact.getDisplayNameNoFallback()
}
}
async getObject(params) {
const members = params.memberFilter ? this.members.filter(params.memberFilter) : this.members
return {
id: this.id,
members: await Promise.all(members.map(async member => {
const copiedMember = { role: member.role }//Object.assign({}, member);
copiedMember.contact = await 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;