fetchUsers method

dynamic fetchUsers(
  1. bool fromSearch, {
  2. bool server = false,
})

Implementation

fetchUsers(bool fromSearch, {bool server = false}) async {
  if (Constants.enableContactSync) {
    var granted = await Permission.contacts.isGranted;
    if (!granted) {
      isPageLoading(false);
      return;
    }
  }
  if (await AppUtils.isNetConnected() || Constants.enableContactSync) {
    callback(FlyResponse response) async {
      if (response.isSuccess && response.hasData) {
        var data = response.data;
        mirrorFlyLog("userlist", data);
        var item = userListFromJson(data);
        var list = <ProfileDetails>[];

        if (groupJid.value.checkNull().isNotEmpty) {
          await Future.forEach(item.data!, (it) async {
            await Mirrorfly.isMemberOfGroup(
                    groupJid: groupJid.value.checkNull(),
                    userJid: it.jid.checkNull())
                .then((value) {
              mirrorFlyLog("item", value.toString());
              if (value == null || !value) {
                list.add(it);
              }
            });
          });
          if (_first) {
            _first = false;
            mainUsersList(list);
          }
          if (fromSearch) {
            if (!Constants.enableContactSync) {
              usersList(list);
              // if(usersList.length==20) pageNum += 1;
              scrollable.value = list.length == 20;
            } else {
              var userlist = mainUsersList.where((p0) => getName(p0)
                  .toString()
                  .toLowerCase()
                  .contains(_searchText.trim().toLowerCase()));
              usersList(userlist.toList());
              scrollable(false);
              /*for (var userDetail in mainUsersList) {
                if (userDetail.name.toString().toLowerCase().contains(_searchText.trim().toLowerCase())) {
                  usersList.add(userDetail);
                }
              }*/
            }
          } else {
            if (!Constants.enableContactSync) {
              usersList.addAll(list);
              // if(usersList.length==20) pageNum += 1;
              scrollable.value = list.length == 20;
            } else {
              usersList(list);
              scrollable(false);
            }
          }
          isPageLoading.value = false;
          usersList.refresh();
        } else {
          list.addAll(item.data!);
          if (Constants.enableContactSync && fromSearch) {
            var userlist = mainUsersList.where((p0) => getName(p0)
                .toString()
                .toLowerCase()
                .contains(_searchText.trim().toLowerCase()));
            usersList(userlist.toList());
            /*for (var userDetail in mainUsersList) {
            if (userDetail.name.toString().toLowerCase().contains(_searchText.trim().toLowerCase())) {
              usersList.add(userDetail);
            }
          }*/
          }
          if (_first) {
            _first = false;
            mainUsersList(list);
          }
          if (fromSearch) {
            if (!Constants.enableContactSync) {
              usersList(list);
              // if(usersList.length==20) pageNum += 1;
              scrollable.value = list.length == 20;
            } else {
              var userlist = mainUsersList.where((p0) => getName(p0)
                  .toString()
                  .toLowerCase()
                  .contains(_searchText.trim().toLowerCase()));
              usersList(userlist.toList());
              scrollable(false);
              /*for (var userDetail in mainUsersList) {
                if (userDetail.name.toString().toLowerCase().contains(_searchText.trim().toLowerCase())) {
                  usersList.add(userDetail);
                }
              }*/
            }
          } else {
            if (!Constants.enableContactSync) {
              usersList.addAll(list);
              // if(usersList.length==20) pageNum += 1;
              scrollable.value = list.length == 20;
            } else {
              usersList(list);
              scrollable(false);
            }
          }
          isPageLoading.value = false;
          usersList.refresh();
        }
      } else {
        toToast(response.exception!.message.toString());
      }
    }

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