This commit is contained in:
Imran Remtulla
2023-09-10 23:11:06 -04:00
parent 118e05a0fa
commit 2aea1d2631
3 changed files with 86 additions and 63 deletions

View File

@@ -1095,8 +1095,10 @@ class AppsProvider with ChangeNotifier {
return updateAppIds;
}
Future<String?> exportApps({bool pickOnly = false, isAuto = false}) async {
var exportDir = settingsProvider.exportDir;
Future<String?> exportApps(
{bool pickOnly = false, isAuto = false, SettingsProvider? sp}) async {
SettingsProvider settingsProvider = sp ?? this.settingsProvider;
var exportDir = await settingsProvider.getExportDir();
if (isAuto) {
if (exportDir == null) {
logs.add('Skipping auto-export as dir is not set.');
@@ -1112,13 +1114,12 @@ class AppsProvider with ChangeNotifier {
logs.add('Previous auto-export deleted.');
}
}
exportDir = settingsProvider.exportDir;
if (exportDir == null || pickOnly) {
await settingsProvider.pickExportDirKeepLastN();
exportDir = settingsProvider.exportDir;
await settingsProvider.pickExportDir();
exportDir = await settingsProvider.getExportDir();
}
if (exportDir == null) {
throw ObtainiumError(tr('unexpectedError'));
return null;
}
String? returnPath;
if (!pickOnly) {

View File

@@ -362,18 +362,25 @@ class SettingsProvider with ChangeNotifier {
notifyListeners();
}
Uri? get exportDir {
Future<Uri?> getExportDir() async {
var uriString = prefs?.getString('exportDir');
if (uriString != null) {
return Uri.parse(uriString);
Uri? uri = Uri.parse(uriString);
if (!(await saf.canRead(uri) ?? false) ||
!(await saf.canWrite(uri) ?? false)) {
uri = null;
prefs?.remove('exportDir');
notifyListeners();
}
return uri;
} else {
return null;
}
}
Future<void> pickExportDirKeepLastN({bool remove = false}) async {
Future<void> pickExportDir({bool remove = false}) async {
var existingSAFPerms = (await saf.persistedUriPermissions()) ?? [];
var currentOneWayDataSyncDir = exportDir;
var currentOneWayDataSyncDir = await getExportDir();
Uri? newOneWayDataSyncDir;
if (!remove) {
newOneWayDataSyncDir = (await saf.openDocumentTree());