makeCall method

void makeCall(
  1. BuildContext context
)

Implementation

void makeCall(BuildContext context) async {
  if (selectedUsersJIDList.isEmpty) {
    return;
  }
  var isOneToOneCall = selectedUsersJIDList.length == 1;
  var isGroupCall = selectedUsersJIDList.length > 1;
  if ((isGroupCall &&
          !availableFeatures.value.isGroupCallAvailable.checkNull()) ||
      (isOneToOneCall &&
          !availableFeatures.value.isOneToOneCallAvailable.checkNull())) {
    Helper.showFeatureUnavailable(context);
    return;
  }
  if ((await Mirrorfly.isOnGoingCall()).checkNull()) {
    debugPrint("#Mirrorfly Call You are on another call");
    toToast(Constants.msgOngoingCallAlert);
    return;
  }
  if (!(await AppUtils.isNetConnected())) {
    toToast(Constants.noInternetConnection);
    return;
  }
  if (callType.value == CallType.audio) {
    if (context.mounted) {
      if (await AppPermission.askAudioCallPermissions(context)) {
        if (isOneToOneCall) {
          Mirrorfly.makeVoiceCall(
              toUserJid: selectedUsersJIDList[0],
              flyCallBack: (FlyResponse response) {
                if (response.isSuccess) {
                  MirrorflyUikit.instance.navigationManager.navigateTo(
                      context: context,
                      pageToNavigate: OutGoingCallView(
                        userJid: [selectedUsersJIDList[0]],
                      ),
                      routeName: Constants.outGoingCallView,
                      onNavigateComplete: () {});
                  // Get.offNamed(Routes.outGoingCallView, arguments: {
                  //   "userJid": [selectedUsersJIDList[0]],
                  //   "callType": CallType.audio
                  // });
                }
              });
        } else {
          Mirrorfly.makeGroupVoiceCall(
              toUserJidList: selectedUsersJIDList,
              flyCallBack: (FlyResponse response) {
                if (response.isSuccess) {
                  MirrorflyUikit.instance.navigationManager.navigateTo(
                      context: context,
                      pageToNavigate: OutGoingCallView(
                        userJid: selectedUsersJIDList,
                      ),
                      routeName: Constants.outGoingCallView,
                      onNavigateComplete: () {});
                  // Get.offNamed(Routes.outGoingCallView,
                  //     arguments: {"userJid": selectedUsersJIDList, "callType": CallType.audio});
                }
              });
        }
      }
    } else if (callType.value == CallType.video) {
      if (context.mounted) {
        if (await AppPermission.askVideoCallPermissions(context)) {
          if (isOneToOneCall) {
            Mirrorfly.makeVideoCall(
                toUserJid: selectedUsersJIDList[0],
                flyCallBack: (FlyResponse response) {
                  if (response.isSuccess) {
                    MirrorflyUikit.instance.navigationManager.navigateTo(
                        context: context,
                        pageToNavigate: OutGoingCallView(
                          userJid: [selectedUsersJIDList[0]],
                        ),
                        routeName: Constants.outGoingCallView,
                        onNavigateComplete: () {});
                    // Get.offNamed(Routes.outGoingCallView, arguments: {
                    //   "userJid": [selectedUsersJIDList[0]],
                    //   "callType": CallType.video
                    // });
                  }
                });
          } else {
            Mirrorfly.makeGroupVideoCall(
                toUserJidList: selectedUsersJIDList,
                flyCallBack: (FlyResponse response) {
                  if (response.isSuccess) {
                    MirrorflyUikit.instance.navigationManager.navigateTo(
                        context: context,
                        pageToNavigate: OutGoingCallView(
                          userJid: selectedUsersJIDList,
                        ),
                        routeName: Constants.outGoingCallView,
                        onNavigateComplete: () {});
                    // Get.offNamed(Routes.outGoingCallView,
                    //     arguments: {
                    //       "userJid": selectedUsersJIDList,
                    //       "callType": CallType.video
                    //     });
                  }
                });
          }
        }
      }
    }
  }
}