blob: 01d4a02025abfb5cdac7f0b21e3a0f9c8683396e [file] [log] [blame]
class Contact {
private readonly uri: string;
private displayName: string | undefined = undefined;
private registeredName: string | undefined = undefined;
constructor(uri: string) {
this.uri = uri;
}
static from(object: Contact) {
const contact = new Contact(object.uri);
if (object.registeredName) contact.setRegisteredName(object.registeredName);
return contact;
}
getUri() {
return this.uri;
}
getRegisteredName() {
return this.registeredName;
}
setRegisteredName(name: string | undefined) {
this.registeredName = name;
}
isRegisteredNameResolved() {
return this.registeredName !== undefined;
}
getDisplayName() {
return this.getDisplayNameNoFallback() || this.getUri();
}
getDisplayNameNoFallback() {
return this.displayName || this.getRegisteredName();
}
async getObject() {
return {
uri: this.uri,
registeredName: await this.registeredName,
};
}
}
export default Contact;