blob: cc8e386d5838261364b78a791e552689407b7752 [file] [log] [blame]
Adrien Béraud0cb76c92021-04-07 19:59:08 -04001class Contact {
simond47ef9e2022-09-28 22:24:28 -04002 constructor(uri) {
3 this.uri = uri;
4 this.displayName = undefined;
5 this.registeredName = undefined;
6 }
Adrien Béraud0cb76c92021-04-07 19:59:08 -04007
simond47ef9e2022-09-28 22:24:28 -04008 static from(object) {
9 const contact = new Contact(object.uri);
10 if (object.registeredName) contact.setRegisteredName(object.registeredName);
11 return contact;
12 }
Adrien Béraud0cb76c92021-04-07 19:59:08 -040013
simond47ef9e2022-09-28 22:24:28 -040014 getUri() {
15 return this.uri;
16 }
Adrien Béraud0cb76c92021-04-07 19:59:08 -040017
simond47ef9e2022-09-28 22:24:28 -040018 getRegisteredName() {
19 return this.registeredName;
20 }
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040021
simond47ef9e2022-09-28 22:24:28 -040022 setRegisteredName(name) {
23 this.registeredName = name;
24 }
Adrien Béraud0cb76c92021-04-07 19:59:08 -040025
simond47ef9e2022-09-28 22:24:28 -040026 isRegisteredNameResolved() {
27 return this.registeredName !== undefined;
28 }
Adrien Béraud0cb76c92021-04-07 19:59:08 -040029
simond47ef9e2022-09-28 22:24:28 -040030 getDisplayName() {
31 return this.getDisplayNameNoFallback() || this.getUri();
32 }
Adrien Béraud150b4782021-04-21 19:40:59 -040033
simond47ef9e2022-09-28 22:24:28 -040034 getDisplayNameNoFallback() {
35 return this.displayName || this.getRegisteredName();
36 }
Adrien Béraud150b4782021-04-21 19:40:59 -040037
simond47ef9e2022-09-28 22:24:28 -040038 async getObject() {
39 return {
40 uri: this.uri,
41 registeredName: await this.registeredName,
42 };
43 }
Adrien Béraud0cb76c92021-04-07 19:59:08 -040044}
45
simond47ef9e2022-09-28 22:24:28 -040046export default Contact;