blob: 22dc477c8eab56136d212cc2a15d11b6259f40db [file] [log] [blame]
Adrien Béraud35e7d7c2021-04-13 03:28:39 -04001const Contact = require('./Contact')
2
Adrien Béraudc4dd44a2021-04-08 01:05:24 -04003class Conversation {
Adrien Béraud35e7d7c2021-04-13 03:28:39 -04004 constructor(id, accountId, members) {
Adrien Béraudc4dd44a2021-04-08 01:05:24 -04005 this.id = id
Adrien Béraud35e7d7c2021-04-13 03:28:39 -04006 this.accountId = accountId
Adrien Béraud995e8022021-04-08 13:46:51 -04007 this.members = members || []
Adrien Béraudc4dd44a2021-04-08 01:05:24 -04008 this.messages = []
9 }
10
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040011 static from(accountId, object) {
12 return new Conversation(object.id, accountId, object.members.map(member => {
13 member.contact = Contact.from(member.contact)
14 return member
15 }))
16 }
17 static fromSingleContact(accountId, contact) {
18 return new Conversation(undefined, accountId, [{contact}])
Adrien Béraudc4dd44a2021-04-08 01:05:24 -040019 }
20
21 getId() { return this.id }
22
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040023 getAccountId() { return this.accountId }
24
Adrien Béraudc4dd44a2021-04-08 01:05:24 -040025 getDisplayName() {
Adrien Béraud995e8022021-04-08 13:46:51 -040026 if (this.members.length !== 0) {
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040027 return this.members[0].contact.getDisplayName()
Adrien Béraud995e8022021-04-08 13:46:51 -040028 }
29 return this.getDisplayUri()
Adrien Béraudc4dd44a2021-04-08 01:05:24 -040030 }
31
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040032 getObject(params) {
33 const members = params.memberFilter ? this.members.filter(params.memberFilter) : this.members
Adrien Béraudc4dd44a2021-04-08 01:05:24 -040034 return {
35 id: this.id,
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040036 members: members.map(member => {
37 const copiedMember = { role: member.role }//Object.assign({}, member);
38 copiedMember.contact = member.contact.getObject()
39 return copiedMember
40 })
Adrien Béraudc4dd44a2021-04-08 01:05:24 -040041 }
42 }
43
44 getSummary() {
45 return this.getObject()
46 }
47
48 getDisplayUri() {
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040049 return this.getId() || this.getFirstMember().contact.getUri()
50 }
51
52 getFirstMember() {
53 return this.members[0]
54 }
55
56 getMembers() {
57 return this.members
Adrien Béraudc4dd44a2021-04-08 01:05:24 -040058 }
59
60 addMessage(message) {
61 this.messages.push(message)
62 }
63}
64
65module.exports = Conversation;