blob: 66459d20670f8dbbdf9b6a26be563095819f2e4c [file] [log] [blame]
Adrien Béraud0cb76c92021-04-07 19:59:08 -04001class Contact {
2 constructor(uri) {
3 this.uri = uri
4 this.displayName = undefined
5 this.registeredName = undefined
6 }
7
8 static from(object) {
Adrien Béraud35e7d7c2021-04-13 03:28:39 -04009 const contact = new Contact(object.uri)
10 if (object.registeredName)
11 contact.setRegisteredName(object.registeredName)
12 return contact
Adrien Béraud0cb76c92021-04-07 19:59:08 -040013 }
14
15 getUri() { return this.uri }
16
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040017 getRegisteredName() { return this.registeredName }
18
19 setRegisteredName(name) { this.registeredName = name }
Adrien Béraud0cb76c92021-04-07 19:59:08 -040020
Adrien Béraud150b4782021-04-21 19:40:59 -040021 isRegisteredNameResolved() {
22 return this.registeredName !== undefined
Adrien Béraud0cb76c92021-04-07 19:59:08 -040023 }
24
Adrien Béraud150b4782021-04-21 19:40:59 -040025 getDisplayName() {
26 return this.getDisplayNameNoFallback() || this.getUri()
27 }
28
29 getDisplayNameNoFallback() {
30 return this.displayName || this.getRegisteredName()
31 }
32
33 async getObject() {
Adrien Béraud0cb76c92021-04-07 19:59:08 -040034 return {
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040035 uri: this.uri,
Adrien Béraud150b4782021-04-21 19:40:59 -040036 registeredName: await this.registeredName
Adrien Béraud0cb76c92021-04-07 19:59:08 -040037 }
38 }
39}
40
Adrien Béraude74741b2021-04-19 13:22:54 -040041export default Contact