blob: fd05f1af06108fa34c2be52bb7a37d5b1f04c3d6 [file] [log] [blame]
Adrien Béraud0cb76c92021-04-07 19:59:08 -04001class Contact {
simon06527b02022-10-01 15:01:47 -04002 private readonly uri: string;
simon5e32f742022-10-04 18:03:12 -04003 private readonly displayName: string | undefined;
4 private registeredName: string | undefined;
simon06527b02022-10-01 15:01:47 -04005
6 constructor(uri: string) {
simond47ef9e2022-09-28 22:24:28 -04007 this.uri = uri;
simon5e32f742022-10-04 18:03:12 -04008 this.displayName = undefined;
9 this.registeredName = undefined;
simond47ef9e2022-09-28 22:24:28 -040010 }
Adrien Béraud0cb76c92021-04-07 19:59:08 -040011
simon5e32f742022-10-04 18:03:12 -040012 static from(object: any) {
simond47ef9e2022-09-28 22:24:28 -040013 const contact = new Contact(object.uri);
14 if (object.registeredName) contact.setRegisteredName(object.registeredName);
15 return contact;
16 }
Adrien Béraud0cb76c92021-04-07 19:59:08 -040017
simond47ef9e2022-09-28 22:24:28 -040018 getUri() {
19 return this.uri;
20 }
Adrien Béraud0cb76c92021-04-07 19:59:08 -040021
simond47ef9e2022-09-28 22:24:28 -040022 getRegisteredName() {
23 return this.registeredName;
24 }
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040025
simon06527b02022-10-01 15:01:47 -040026 setRegisteredName(name: string | undefined) {
simond47ef9e2022-09-28 22:24:28 -040027 this.registeredName = name;
28 }
Adrien Béraud0cb76c92021-04-07 19:59:08 -040029
simond47ef9e2022-09-28 22:24:28 -040030 isRegisteredNameResolved() {
31 return this.registeredName !== undefined;
32 }
Adrien Béraud0cb76c92021-04-07 19:59:08 -040033
simond47ef9e2022-09-28 22:24:28 -040034 getDisplayName() {
35 return this.getDisplayNameNoFallback() || this.getUri();
36 }
Adrien Béraud150b4782021-04-21 19:40:59 -040037
simond47ef9e2022-09-28 22:24:28 -040038 getDisplayNameNoFallback() {
39 return this.displayName || this.getRegisteredName();
40 }
Adrien Béraud150b4782021-04-21 19:40:59 -040041
simond47ef9e2022-09-28 22:24:28 -040042 async getObject() {
43 return {
44 uri: this.uri,
45 registeredName: await this.registeredName,
46 };
47 }
Adrien Béraud0cb76c92021-04-07 19:59:08 -040048}
49
simond47ef9e2022-09-28 22:24:28 -040050export default Contact;