getAndroid13Permission static method

Future<bool> getAndroid13Permission()

Implementation

static Future<bool> getAndroid13Permission() async {
  final photos = await Permission.photos.status;
  final videos = await Permission.videos.status;
  final mediaLibrary = await Permission.mediaLibrary.status;
  // final audio = await Permission.audio.status;
  const newPermission = [
    Permission.photos,
    Permission.videos,
    Permission.mediaLibrary,
    // Permission.audio
  ];
  if ((photos != PermissionStatus.granted &&
          photos != PermissionStatus.permanentlyDenied) ||
      (videos != PermissionStatus.granted &&
          videos != PermissionStatus.permanentlyDenied) ||
      (mediaLibrary != PermissionStatus.granted &&
          mediaLibrary != PermissionStatus.permanentlyDenied)) {
    LogMessage.d("showing mirrorfly popup", "");
    var deniedPopupValue = await mirrorFlyPermissionDialog(
        icon: filePermission,
        content: getTranslated("filePermissionContent"),
        dialogStyle: AppStyleConfig.dialogStyle);
    if (deniedPopupValue) {
      var newp = await newPermission.request();
      PermissionStatus? photo = newp[Permission.photos];
      PermissionStatus? video = newp[Permission.videos];
      PermissionStatus? mediaLibrary = newp[Permission.mediaLibrary];
      // var audio = await newPermission[2].isGranted;
      if (photo!.isGranted && video!.isGranted && mediaLibrary!.isGranted) {
        return true;
      } else if (photo.isPermanentlyDenied ||
          video!.isPermanentlyDenied ||
          mediaLibrary!.isPermanentlyDenied) {
        var popupValue = await customPermissionDialog(
            icon: filePermission,
            content: getPermissionAlertMessage("storage"),
            dialogStyle: AppStyleConfig.dialogStyle);
        if (popupValue) {
          openAppSettings();
          return false;
        } else {
          return false;
        }
      } else {
        return false;
      }
    } else {
      return false; //PermissionStatus.denied;
    }
  } else {
    LogMessage.d("showing mirrorfly popup",
        "${photos.isGranted} ${videos.isGranted} ${mediaLibrary.isGranted}");
    return (photos.isGranted && videos.isGranted && mediaLibrary.isGranted);
    // ? photos
    // : photos;
  }
}