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