From e707e517198d0fde8c2cc395b36fa8995ef0ecbb Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Mon, 29 Jul 2024 21:59:29 +0200 Subject: [PATCH] fix: Revert commit b26760b2 to fix file and folder selection --- lib/services/manager_api.dart | 9 +-- .../patch_options_fields.dart | 66 ++++++------------- pubspec.yaml | 1 - 3 files changed, 22 insertions(+), 54 deletions(-) diff --git a/lib/services/manager_api.dart b/lib/services/manager_api.dart index ce26bf96..0e02228a 100644 --- a/lib/services/manager_api.dart +++ b/lib/services/manager_api.dart @@ -38,8 +38,6 @@ class ManagerAPI { bool releaseBuild = false; bool suggestedAppVersionSelected = true; bool isDynamicThemeAvailable = false; - bool isScopedStorageAvailable = false; - int sdkVersion = 0; String storedPatchesFile = '/selected-patches.json'; String keystoreFile = '/sdcard/Android/data/app.revanced.manager.flutter/files/revanced-manager.keystore'; @@ -57,13 +55,8 @@ class ManagerAPI { Future initialize() async { _prefs = await SharedPreferences.getInstance(); isRooted = await _rootAPI.isRooted(); - if (sdkVersion == 0) { - sdkVersion = await getSdkVersion(); - } isDynamicThemeAvailable = - sdkVersion >= 31; // ANDROID_12_SDK_VERSION = 31 - isScopedStorageAvailable = - sdkVersion >= 30; // ANDROID_11_SDK_VERSION = 30 + (await getSdkVersion()) >= 31; // ANDROID_12_SDK_VERSION = 31 storedPatchesFile = (await getApplicationDocumentsDirectory()).path + storedPatchesFile; if (kReleaseMode) { diff --git a/lib/ui/widgets/patchesSelectorView/patch_options_fields.dart b/lib/ui/widgets/patchesSelectorView/patch_options_fields.dart index 8df0ecdd..f400019d 100644 --- a/lib/ui/widgets/patchesSelectorView/patch_options_fields.dart +++ b/lib/ui/widgets/patchesSelectorView/patch_options_fields.dart @@ -1,11 +1,8 @@ -import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:permission_handler/permission_handler.dart'; -import 'package:revanced_manager/app/app.locator.dart'; +import 'package:flutter_file_dialog/flutter_file_dialog.dart'; import 'package:revanced_manager/gen/strings.g.dart'; import 'package:revanced_manager/models/patch.dart'; -import 'package:revanced_manager/services/manager_api.dart'; import 'package:revanced_manager/ui/views/patch_options/patch_options_viewmodel.dart'; import 'package:revanced_manager/ui/widgets/shared/custom_card.dart'; @@ -401,7 +398,6 @@ class TextFieldForPatchOption extends StatefulWidget { } class _TextFieldForPatchOptionState extends State { - final ManagerAPI _managerAPI = locator(); final TextEditingController controller = TextEditingController(); String? selectedKey; String? defaultValue; @@ -528,49 +524,29 @@ class _TextFieldForPatchOptionState extends State { ]; }, onSelected: (String selection) async { - // manageExternalStorage permission is required for file/folder selection - // otherwise, the app will not complain, but the patches will error out - // the same way as if the user selected an empty file/folder. - // Android 11 and above requires the manageExternalStorage permission - final Map availableActions = { - t.patchOptionsView.selectFilePath: () async { - if (_managerAPI.isScopedStorageAvailable) { - final permission = - await Permission.manageExternalStorage.request(); - if (!permission.isGranted) { - return; - } + switch (selection) { + case 'file': + final String? result = await FlutterFileDialog.pickFile(); + if (result != null) { + controller.text = result; + widget.onChanged(controller.text); } - final FilePickerResult? result = - await FilePicker.platform.pickFiles(); - if (result == null) { - return; + break; + case 'folder': + final DirectoryLocation? result = + await FlutterFileDialog.pickDirectory(); + if (result != null) { + controller.text = result.toString(); + widget.onChanged(controller.text); } - controller.text = result.files.single.path!; - widget.onChanged(controller.text); - }, - t.patchOptionsView.selectFolder: () async { - if (_managerAPI.isScopedStorageAvailable) { - final permission = - await Permission.manageExternalStorage.request(); - if (!permission.isGranted) { - return; - } - } - final String? result = - await FilePicker.platform.getDirectoryPath(); - if (result == null) { - return; - } - controller.text = result; - widget.onChanged(controller.text); - }, - t.remove: () { + break; + case 'remove': widget.removeValue!(); - }, - }; - if (availableActions.containsKey(selection)) { - await availableActions[selection]!(); + break; + case 'null': + controller.text = ''; + widget.onChanged(null); + break; } }, ), diff --git a/pubspec.yaml b/pubspec.yaml index 2fbd1719..b10fbd28 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,6 @@ dependencies: dynamic_color: ^1.7.0 dynamic_themes: ^1.1.0 expandable: ^5.0.1 - file_picker: ^8.0.3 flutter: sdk: flutter flutter_background: