fetchContacts method
gives list of AtContact
.
returns null if some error occurred.
Implementation
Future<List<AtContact>?> fetchContacts() async {
try {
/// if contact list is already present, data is not fetched again
if (baseContactList.isNotEmpty) {
List<AtContact?> baseContacts =
baseContactList.map((e) => e.contact).toList();
baseContacts.sort((a, b) {
int? index = a?.atSign
.toString()
.substring(1)
.compareTo((b?.atSign).toString().substring(1));
return index ?? 0;
});
if (baseContacts == contactList) {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
contactSink.add(baseContacts);
});
return contactList;
}
}
selectedContacts = [];
contactList = [];
allContactsList = [];
contactList = await atContactImpl.listContacts();
var tempContactList = <AtContact>[...contactList];
var range = contactList.length;
for (var i = 0; i < range; i++) {
allContactsList.add(contactList[i].atSign!);
if (contactList[i].blocked!) {
tempContactList.remove(contactList[i]);
}
}
contactList = tempContactList;
contactList.sort((a, b) {
int? index = a.atSign
.toString()
.substring(1)
.compareTo(b.atSign!.toString().substring(1));
return index;
});
compareContactListForUpdatedState();
contactSink.add(baseContactList);
return contactList;
} catch (e) {
print('error in fetchContacts => $e');
return null;
}
}