getAndroid13Permission static method

Future<bool> getAndroid13Permission(
  1. BuildContext context
)

Implementation

static Future<bool> getAndroid13Permission(BuildContext context) async {
  // var info = await PackageInfo.fromPlatform();
  final photos = await Permission.photos.status;
  final videos = await Permission.videos.status;

  ///Commenting this because mediaLibrary is only used for iOS, the above is Android 13 permission
  // final mediaLibrary = await Permission.mediaLibrary.status;
  // final audio = await Permission.audio.status;
  const newPermission = [
    Permission.photos,
    Permission.videos,
    // Permission.audio
  ];
  if ((photos != PermissionStatus.granted &&
              photos != PermissionStatus.permanentlyDenied) ||
          (videos != PermissionStatus.granted &&
              videos != PermissionStatus.permanentlyDenied)
      // || (mediaLibrary != PermissionStatus.granted && mediaLibrary != PermissionStatus.permanentlyDenied)
      ) {
    if (context.mounted) {
      mirrorFlyLog("showing mirror fly popup", "");
      var deniedPopupValue = await mirrorFlyPermissionDialog(
          context: context,
          icon: filePermission,
          content: AppConstants.filePermission,
          appName: AppConstants.appName);
      if (deniedPopupValue) {
        var newp = await newPermission.request();
        PermissionStatus? photo = newp[Permission.photos];
        PermissionStatus? video = newp[Permission.videos];
        if (photo!.isGranted && video!.isGranted) {
          return true;
        } else if (photo.isPermanentlyDenied || video!.isPermanentlyDenied) {
          if (context.mounted) {
            var popupValue = await customPermissionDialog(
                context: context,
                icon: filePermission,
                content: getPermissionAlertMessage("storage"),
                appName: AppConstants.appName);
            if (popupValue) {
              openAppSettings();
              return false;
            } else {
              return false;
            }
          } else {
            return false;
          }
        } else {
          return false;
        }
      } else {
        return false; //PermissionStatus.denied;
      }
    }
    return false;
  } else {
    mirrorFlyLog(
        "showing mirrorfly popup", "${photos.isGranted} ${videos.isGranted}");
    return (photos.isGranted &&
        videos.isGranted); // && mediaLibrary.isGranted);
  }
}