compareBlockedContactListForUpdatedState method

void compareBlockedContactListForUpdatedState()

Implementation

void compareBlockedContactListForUpdatedState() {
  blockContactList.forEach(
    (c) {
      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>[];
  baseBlockedList.forEach((baseContact) {
    var index = blockContactList.indexWhere(
      (e) => e!.atSign == baseContact.contact!.atSign,
    );
    if (index == -1) {
      atsignsToRemove.add(baseContact.contact!.atSign!);
    }
  });
  atsignsToRemove.forEach((e) {
    baseBlockedList.removeWhere((element) => element.contact!.atSign == e);
  });
}