compareContactListForUpdatedState method

void compareContactListForUpdatedState()

Implementation

void compareContactListForUpdatedState() {
  contactList.forEach(
    (c) {
      var index =
          baseContactList.indexWhere((e) => e.contact!.atSign == c!.atSign);
      if (index > -1) {
        baseContactList[index] = BaseContact(
          c,
          isBlocking: baseContactList[index].isBlocking,
          isMarkingFav: baseContactList[index].isMarkingFav,
          isDeleting: baseContactList[index].isDeleting,
        );
      } else {
        baseContactList.add(
          BaseContact(
            c,
            isBlocking: false,
            isMarkingFav: false,
            isDeleting: false,
          ),
        );
      }
    },
  );

  // checking to remove deleted atsigns from baseContactList.
  var atsignsToRemove = <String>[];
  baseContactList.forEach((baseContact) {
    var index = contactList.indexWhere(
      (e) => e!.atSign == baseContact.contact!.atSign,
    );
    if (index == -1) {
      atsignsToRemove.add(baseContact.contact!.atSign!);
    }
  });
  atsignsToRemove.forEach((e) {
    baseContactList.removeWhere((element) => element.contact!.atSign == e);
  });
}