From 6b81d0fc0243819480594131018746567d7089da Mon Sep 17 00:00:00 2001 From: NBA2K1 <78034913+NBA2K1@users.noreply.github.com> Date: Mon, 26 May 2025 15:37:09 +0200 Subject: [PATCH] Update storage_provider.dart - Move manageExternalStorage inside if (android), as it is Android only. - Cache permission state, to only check for permission once per app start preventing redundant checks. - Made `initDB` fully async to enhance efficiency and avoid sync operations --- lib/providers/storage_provider.dart | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/providers/storage_provider.dart b/lib/providers/storage_provider.dart index 0159fca8..8584dd7c 100644 --- a/lib/providers/storage_provider.dart +++ b/lib/providers/storage_provider.dart @@ -21,14 +21,17 @@ import 'package:permission_handler/permission_handler.dart'; import 'package:path/path.dart' as path; class StorageProvider { + static bool _hasPermission = false; Future requestPermission() async { - Permission permission = Permission.manageExternalStorage; + if (_hasPermission) return true; if (Platform.isAndroid) { + Permission permission = Permission.manageExternalStorage; if (await permission.isGranted) { return true; } else { final result = await permission.request(); if (result == PermissionStatus.granted) { + _hasPermission = true; return true; } return false; @@ -155,7 +158,7 @@ class StorageProvider { dir = Directory(path); } - final isar = Isar.openSync( + final isar = await Isar.open( [ MangaSchema, ChangedPartSchema, @@ -177,9 +180,10 @@ class StorageProvider { inspector: inspector!, ); - if (isar.settings.filter().idEqualTo(227).isEmptySync()) { - isar.writeTxnSync(() { - isar.settings.putSync(Settings()); + final settings = await isar.settings.filter().idEqualTo(227).findFirst(); + if (settings == null) { + await isar.writeTxn(() async { + isar.settings.put(Settings()); }); }