getContactDetails method
Implementation
Future<Map<String, dynamic>> getContactDetails(
String? atSign, String? nickName) async {
var contactDetails = <String, dynamic>{};
if (atClientInstance == null || atSign == null) {
return contactDetails;
} else if (!atSign.contains('@')) {
atSign = '@' + atSign;
}
var metadata = Metadata();
metadata.isPublic = true;
metadata.namespaceAware = false;
var key = AtKey();
key.sharedBy = atSign;
key.metadata = metadata;
List contactFields = TextStrings().contactFields;
try {
// firstname
key.key = contactFields[0];
var result = await atClientInstance!.get(key).catchError((e) {
print('error in get ${e.errorCode} ${e.errorMessage}');
});
var firstname = result.value;
// lastname
key.key = contactFields[1];
result = await atClientInstance!.get(key);
var lastname = result.value;
// construct name
var name = ((firstname ?? '') + ' ' + (lastname ?? '')).trim();
if (name.length == 0) {
name = atSign.substring(1);
}
// profile picture
key.metadata?.isBinary = true;
key.key = contactFields[2];
result = await atClientInstance!.get(key);
var image = result.value;
contactDetails['name'] = name;
contactDetails['image'] = image;
contactDetails['nickname'] = nickName != '' ? nickName : null;
} catch (e) {
contactDetails['name'] = null;
contactDetails['image'] = null;
contactDetails['nickname'] = null;
}
return contactDetails;
}