mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-24 18:38:48 +01:00
Check permission before querying local files
This commit is contained in:
parent
2275da0170
commit
c84083886b
1 changed files with 55 additions and 2 deletions
|
@ -9,7 +9,10 @@ import 'package:nc_photos/entity/local_file.dart';
|
||||||
import 'package:nc_photos/exception_util.dart' as exception_util;
|
import 'package:nc_photos/exception_util.dart' as exception_util;
|
||||||
import 'package:nc_photos/iterable_extension.dart';
|
import 'package:nc_photos/iterable_extension.dart';
|
||||||
import 'package:nc_photos/k.dart' as k;
|
import 'package:nc_photos/k.dart' as k;
|
||||||
|
import 'package:nc_photos/mobile/android/android_info.dart';
|
||||||
import 'package:nc_photos/mobile/android/content_uri_image_provider.dart';
|
import 'package:nc_photos/mobile/android/content_uri_image_provider.dart';
|
||||||
|
import 'package:nc_photos/mobile/android/permission_util.dart';
|
||||||
|
import 'package:nc_photos/platform/k.dart' as platform_k;
|
||||||
import 'package:nc_photos/pref.dart';
|
import 'package:nc_photos/pref.dart';
|
||||||
import 'package:nc_photos/share_handler.dart';
|
import 'package:nc_photos/share_handler.dart';
|
||||||
import 'package:nc_photos/snack_bar_manager.dart';
|
import 'package:nc_photos/snack_bar_manager.dart';
|
||||||
|
@ -58,8 +61,18 @@ class _EnhancedPhotoBrowserState extends State<EnhancedPhotoBrowser>
|
||||||
@override
|
@override
|
||||||
initState() {
|
initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_initBloc();
|
|
||||||
_thumbZoomLevel = Pref().getAlbumBrowserZoomLevelOr(0);
|
_thumbZoomLevel = Pref().getAlbumBrowserZoomLevelOr(0);
|
||||||
|
_ensurePermission().then((value) {
|
||||||
|
if (value) {
|
||||||
|
_initBloc();
|
||||||
|
} else {
|
||||||
|
if (mounted) {
|
||||||
|
setState(() {
|
||||||
|
_isNoPermission = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -94,7 +107,23 @@ class _EnhancedPhotoBrowserState extends State<EnhancedPhotoBrowser>
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildContent(BuildContext context, ScanLocalDirBlocState state) {
|
Widget _buildContent(BuildContext context, ScanLocalDirBlocState state) {
|
||||||
if (state is ScanLocalDirBlocSuccess && itemStreamListItems.isEmpty) {
|
if (_isNoPermission) {
|
||||||
|
return Column(
|
||||||
|
children: [
|
||||||
|
AppBar(
|
||||||
|
title: Text(L10n.global().collectionEnhancedPhotosLabel),
|
||||||
|
elevation: 0,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: EmptyListIndicator(
|
||||||
|
icon: Icons.folder_off_outlined,
|
||||||
|
text: L10n.global().errorNoStoragePermission,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
} else if (state is ScanLocalDirBlocSuccess &&
|
||||||
|
itemStreamListItems.isEmpty) {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
AppBar(
|
AppBar(
|
||||||
|
@ -300,6 +329,29 @@ class _EnhancedPhotoBrowserState extends State<EnhancedPhotoBrowser>
|
||||||
arguments: LocalFileViewerArguments(_backingFiles, index));
|
arguments: LocalFileViewerArguments(_backingFiles, index));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<bool> _ensurePermission() async {
|
||||||
|
if (platform_k.isAndroid) {
|
||||||
|
if (AndroidInfo().sdkInt >= AndroidVersion.R) {
|
||||||
|
if (!await Permission.hasReadExternalStorage()) {
|
||||||
|
final results = await requestPermissionsForResult([
|
||||||
|
Permission.READ_EXTERNAL_STORAGE,
|
||||||
|
]);
|
||||||
|
return results[Permission.READ_EXTERNAL_STORAGE] ==
|
||||||
|
PermissionRequestResult.granted;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!await Permission.hasWriteExternalStorage()) {
|
||||||
|
final results = await requestPermissionsForResult([
|
||||||
|
Permission.WRITE_EXTERNAL_STORAGE,
|
||||||
|
]);
|
||||||
|
return results[Permission.WRITE_EXTERNAL_STORAGE] ==
|
||||||
|
PermissionRequestResult.granted;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void _reqQuery() {
|
void _reqQuery() {
|
||||||
_bloc.add(const ScanLocalDirBlocQuery(
|
_bloc.add(const ScanLocalDirBlocQuery(
|
||||||
["Download/Photos (for Nextcloud)/Enhanced Photos"]));
|
["Download/Photos (for Nextcloud)/Enhanced Photos"]));
|
||||||
|
@ -312,6 +364,7 @@ class _EnhancedPhotoBrowserState extends State<EnhancedPhotoBrowser>
|
||||||
var _isFirstRun = true;
|
var _isFirstRun = true;
|
||||||
var _thumbZoomLevel = 0;
|
var _thumbZoomLevel = 0;
|
||||||
int get _thumbSize => photo_list_util.getThumbSize(_thumbZoomLevel);
|
int get _thumbSize => photo_list_util.getThumbSize(_thumbZoomLevel);
|
||||||
|
var _isNoPermission = false;
|
||||||
|
|
||||||
static final _log =
|
static final _log =
|
||||||
Logger("widget.enhanced_photo_browser._EnhancedPhotoBrowserState");
|
Logger("widget.enhanced_photo_browser._EnhancedPhotoBrowserState");
|
||||||
|
|
Loading…
Reference in a new issue