compareBlockedContactListForUpdatedState method

void compareBlockedContactListForUpdatedState()

compares blockContactList with baseBlockedList and assigns isBlocking, isMarkingFav and isDeleting for existing atsigns in baseBlockedList.

Implementation

void compareBlockedContactListForUpdatedState() {
  for (var c in blockContactList) {
    var index =
        baseBlockedList.indexWhere((e) => e.contact!.atSign == c.atSign);
    if (index > -1) {
      baseBlockedList[index] = BaseContact(
        c,
        isBlocking: baseBlockedList[index].isBlocking,
        isMarkingFav: baseBlockedList[index].isMarkingFav,
        isDeleting: baseBlockedList[index].isDeleting,
      );
    } else {
      baseBlockedList.add(
        BaseContact(
          c,
          isBlocking: false,
          isMarkingFav: false,
          isDeleting: false,
        ),
      );
    }
  }

  // checking to remove unblocked atsigns from baseBlockedList.
  var atsignsToRemove = <String>[];
  for (var baseContact in baseBlockedList) {
    var index = blockContactList.indexWhere(
      (e) => e.atSign == baseContact.contact!.atSign,
    );
    if (index == -1) {
      atsignsToRemove.add(baseContact.contact!.atSign!);
    }
  }
  for (var e in atsignsToRemove) {
    baseBlockedList.removeWhere((element) => element.contact!.atSign == e);
  }
}