Adrien Béraud | 0cb76c9 | 2021-04-07 19:59:08 -0400 | [diff] [blame] | 1 | class Contact { |
simon | 06527b0 | 2022-10-01 15:01:47 -0400 | [diff] [blame] | 2 | private readonly uri: string; |
simon | 5e32f74 | 2022-10-04 18:03:12 -0400 | [diff] [blame] | 3 | private readonly displayName: string | undefined; |
4 | private registeredName: string | undefined; | ||||
simon | 06527b0 | 2022-10-01 15:01:47 -0400 | [diff] [blame] | 5 | |
6 | constructor(uri: string) { | ||||
simon | d47ef9e | 2022-09-28 22:24:28 -0400 | [diff] [blame] | 7 | this.uri = uri; |
simon | 5e32f74 | 2022-10-04 18:03:12 -0400 | [diff] [blame] | 8 | this.displayName = undefined; |
9 | this.registeredName = undefined; | ||||
simon | d47ef9e | 2022-09-28 22:24:28 -0400 | [diff] [blame] | 10 | } |
Adrien Béraud | 0cb76c9 | 2021-04-07 19:59:08 -0400 | [diff] [blame] | 11 | |
simon | 5e32f74 | 2022-10-04 18:03:12 -0400 | [diff] [blame] | 12 | static from(object: any) { |
simon | d47ef9e | 2022-09-28 22:24:28 -0400 | [diff] [blame] | 13 | const contact = new Contact(object.uri); |
14 | if (object.registeredName) contact.setRegisteredName(object.registeredName); | ||||
15 | return contact; | ||||
16 | } | ||||
Adrien Béraud | 0cb76c9 | 2021-04-07 19:59:08 -0400 | [diff] [blame] | 17 | |
simon | d47ef9e | 2022-09-28 22:24:28 -0400 | [diff] [blame] | 18 | getUri() { |
19 | return this.uri; | ||||
20 | } | ||||
Adrien Béraud | 0cb76c9 | 2021-04-07 19:59:08 -0400 | [diff] [blame] | 21 | |
simon | d47ef9e | 2022-09-28 22:24:28 -0400 | [diff] [blame] | 22 | getRegisteredName() { |
23 | return this.registeredName; | ||||
24 | } | ||||
Adrien Béraud | 35e7d7c | 2021-04-13 03:28:39 -0400 | [diff] [blame] | 25 | |
simon | 06527b0 | 2022-10-01 15:01:47 -0400 | [diff] [blame] | 26 | setRegisteredName(name: string | undefined) { |
simon | d47ef9e | 2022-09-28 22:24:28 -0400 | [diff] [blame] | 27 | this.registeredName = name; |
28 | } | ||||
Adrien Béraud | 0cb76c9 | 2021-04-07 19:59:08 -0400 | [diff] [blame] | 29 | |
simon | d47ef9e | 2022-09-28 22:24:28 -0400 | [diff] [blame] | 30 | isRegisteredNameResolved() { |
31 | return this.registeredName !== undefined; | ||||
32 | } | ||||
Adrien Béraud | 0cb76c9 | 2021-04-07 19:59:08 -0400 | [diff] [blame] | 33 | |
simon | d47ef9e | 2022-09-28 22:24:28 -0400 | [diff] [blame] | 34 | getDisplayName() { |
35 | return this.getDisplayNameNoFallback() || this.getUri(); | ||||
36 | } | ||||
Adrien Béraud | 150b478 | 2021-04-21 19:40:59 -0400 | [diff] [blame] | 37 | |
simon | d47ef9e | 2022-09-28 22:24:28 -0400 | [diff] [blame] | 38 | getDisplayNameNoFallback() { |
39 | return this.displayName || this.getRegisteredName(); | ||||
40 | } | ||||
Adrien Béraud | 150b478 | 2021-04-21 19:40:59 -0400 | [diff] [blame] | 41 | |
simon | d47ef9e | 2022-09-28 22:24:28 -0400 | [diff] [blame] | 42 | async getObject() { |
43 | return { | ||||
44 | uri: this.uri, | ||||
45 | registeredName: await this.registeredName, | ||||
46 | }; | ||||
47 | } | ||||
Adrien Béraud | 0cb76c9 | 2021-04-07 19:59:08 -0400 | [diff] [blame] | 48 | } |
49 | |||||
simon | d47ef9e | 2022-09-28 22:24:28 -0400 | [diff] [blame] | 50 | export default Contact; |