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