askiOSVideoCallPermissions static method

Future<bool> askiOSVideoCallPermissions(
  1. BuildContext context
)

Implementation

static Future<bool> askiOSVideoCallPermissions(BuildContext context) async {
  // var info = await PackageInfo.fromPlatform();

  final microphone = await Permission.microphone.status; //RECORD_AUDIO
  final camera = await Permission.camera.status;
  const newPermission = [
    Permission.microphone,
    Permission.camera,
  ];
  if ((microphone != PermissionStatus.granted &&
          microphone != PermissionStatus.permanentlyDenied) ||
      (camera != PermissionStatus.granted &&
          camera != PermissionStatus.permanentlyDenied)) {
    if (context.mounted) {
      var permissionPopupValue = await mirrorFlyPermissionDialog(
          icon: recordAudioVideoPermission,
          content: Constants.videoCallPermission,
          appName: AppConstants.appName,
          context: context);
      if (permissionPopupValue) {
        var newp = await newPermission.request();
        PermissionStatus? speech_ = newp[Permission.microphone];
        PermissionStatus? camera_ = newp[Permission.camera];
        return (speech_!.isGranted && camera_!.isGranted);
      } else {
        toToast("Need Camera and Microphone Permission to Make Video Call");
        return false;
      }
    } else {
      LogMessage.d("askiOSVideoCallPermissions mirrorFlyPermissionDialog",
          "Context is Not Mounted");
      return false;
    }
  } else if ((microphone == PermissionStatus.permanentlyDenied) ||
      (camera == PermissionStatus.permanentlyDenied)) {
    if (context.mounted) {
      var popupValue = await customPermissionDialog(
          icon: audioPermission,
          content: getPermissionAlertMessage("audio_call"),
          appName: AppConstants.appName,
          context: context);
      if (popupValue) {
        openAppSettings();
        return false;
      } else {
        return false;
      }
    } else {
      LogMessage.d("askiOSVideoCallPermissions customPermissionDialog",
          "Context is Not Mounted");
      return false;
    }
  } else {
    return (microphone.isGranted && camera.isGranted);
  }
}