outGoingCall method

void outGoingCall({
  1. required String phoneNumber,
  2. required VoidCallback handleRegisterCall,
  3. String nameCaller = '',
})

Implementation

void outGoingCall({
  required String phoneNumber,
  required VoidCallback handleRegisterCall,
  String nameCaller = '',
}) {
  thr.throttle(() async {
    _outPhone = phoneNumber;
    _nameCaller = nameCaller;
    final PitelCall pitelCall = PitelClient.getInstance().pitelCall;
    final PitelClient pitelClient = PitelClient.getInstance();

    final connectivityResult = await (Connectivity().checkConnectivity());
    if (connectivityResult == ConnectivityResult.none) {
      _checkConnectivity = ConnectivityResult.none;
      EasyLoading.showToast(
        'Please check your network',
        toastPosition: EasyLoadingToastPosition.center,
      );
      return;
    }
    if (connectivityResult != _checkConnectivity) {
      _checkConnectivity = connectivityResult;
      EasyLoading.show(status: "Connecting...");
      handleRegisterCall();
      return;
    }
    if (connectivityResult == ConnectivityResult.wifi) {
      try {
        final wifiIP = await NetworkInfo().getWifiIP();
        if (wifiIP != _wifiIP) {
          _wifiIP = wifiIP;
          EasyLoading.show(status: "Connecting...");
          handleRegisterCall();
          return;
        }
      } catch (error) {
        EasyLoading.show(status: "Connecting...");
        handleRegisterCall();
        return;
      }
    }
    final isRegistered = pitelCall.getRegisterState();
    if (isRegistered == 'Registered') {
      pitelClient
          .call(phoneNumber, true)
          .then((value) => value.fold((succ) => "OK", (err) {
                EasyLoading.showToast(
                  err.toString(),
                  toastPosition: EasyLoadingToastPosition.center,
                );
              }));
    } else {
      EasyLoading.show(status: "Connecting...");
      handleRegisterCall();
    }
  });
}