filterUserList method

Future<void> filterUserList()

Implementation

Future<void> filterUserList() async {
  if (await AppUtils.isNetConnected()) {
    _userList.clear();
    searching = true;
    searchLoading(true);
    callback(FlyResponse response) {
      if (response.isSuccess) {
        if (response.hasData) {
          var list = userListFromJson(response.data);
          if (list.data != null) {
            list.data?.forEach((user) {
              // add only when user not available in recent chat list
              if (_recentChats
                  .indexWhere((element) => element.jid == user.jid)
                  .isNegative) {
                if (!Constants.enableContactSync) {
                  _userList.add(user);
                } else {
                  var filter = user.nickName
                      .checkNull()
                      .toLowerCase()
                      .contains(
                          searchQuery.text.trim().toString().toLowerCase());
                  if (filter) {
                    _userList.add(user);
                  }
                }
              }
            });
            scrollable(
                (_userList.length == 20 && !Constants.enableContactSync));
          } else {
            scrollable(false);
          }
        }
        searching = false;
        searchLoading(false);
      } else {
        searching = false;
        searchLoading(false);
      }
    }

    (!Constants.enableContactSync)
        ? Mirrorfly.getUserList(
            page: pageNum,
            search: searchQuery.text.trim().toString(),
            flyCallback: callback)
        : Mirrorfly.getRegisteredUsers(
            fetchFromServer: false, flyCallback: callback);
  } else {
    toToast(Constants.noInternetConnection);
  }
}