diff --git a/.flutter b/.flutter index 9f455d2..adc9010 160000 --- a/.flutter +++ b/.flutter @@ -1 +1 @@ -Subproject commit 9f455d2486bcb28cad87b062475f42edc959f636 +Subproject commit adc901062556672b4138e18a4dc62a4be8f4b3c2 diff --git a/lib/app_sources/github.dart b/lib/app_sources/github.dart index fe4a2d9..8b9060a 100644 --- a/lib/app_sources/github.dart +++ b/lib/app_sources/github.dart @@ -405,7 +405,7 @@ class GitHub extends AppSource { findReleaseAssetUrls(dynamic release) => (release['assets'] as List?)?.map((e) { var ext = e['name'].toString().toLowerCase().split('.').last; - var url = !(ext == 'apk' || (includeZips && ext == 'zip')) + var url = !(ext == 'apk' || ext == 'xapk' || (includeZips && ext == 'zip')) ? (e['browser_download_url'] ?? e['url']) : (e['url'] ?? e['browser_download_url']); url = undoGHProxyMod(url, sourceConfigSettingValues); @@ -550,7 +550,7 @@ class GitHub extends AppSource { .toLowerCase() .split('.') .last; - return ext == 'apk' || (includeZips && ext == 'zip'); + return ext == 'apk' || ext == 'xapk' || (includeZips && ext == 'zip'); }).toList(); var filteredApkUrls = filterApks( diff --git a/lib/app_sources/rustore.dart b/lib/app_sources/rustore.dart index d174ffc..33b4617 100644 --- a/lib/app_sources/rustore.dart +++ b/lib/app_sources/rustore.dart @@ -86,7 +86,11 @@ class RuStore extends AppSource { postBody: {"appId": appDetails['appId'], "firstInstall": true}, ); var downloadDetails = (await decodeJsonBody(res1.bodyBytes))['body']; - if (res1.statusCode != 200 || downloadDetails['downloadUrls'][0]['url'] == null) { + try { + if (res1.statusCode != 200 || downloadDetails['downloadUrls'][0]['url'] == null) { + throw NoAPKError(); + } + } catch (e) { throw NoAPKError(); } diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index 7770cce..9f87a7d 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -498,6 +498,10 @@ Future getInstalledInfo( return null; } +Future getAppStorageDir() async => + await getExternalStorageDirectory() ?? + await getApplicationDocumentsDirectory(); + class AppsProvider with ChangeNotifier { // In memory App state (should always be kept in sync with local storage versions) Map apps = {}; @@ -534,15 +538,11 @@ class AppsProvider with ChangeNotifier { iconsCacheDir.createSync(); } } else { - APKDir = Directory( - '${(await getExternalStorageDirectory())!.path}/apks', - ); + APKDir = Directory('${(await getAppStorageDir()).path}/apks'); if (!APKDir.existsSync()) { APKDir.createSync(); } - iconsCacheDir = Directory( - '${(await getExternalStorageDirectory())!.path}/icons', - ); + iconsCacheDir = Directory('${(await getAppStorageDir()).path}/icons'); if (!iconsCacheDir.existsSync()) { iconsCacheDir.createSync(); } @@ -1002,7 +1002,7 @@ class AppsProvider with ChangeNotifier { } Future getStorageRootPath() async { - return '/${(await getExternalStorageDirectory())!.uri.pathSegments.sublist(0, 3).join('/')}'; + return '/${(await getAppStorageDir()).uri.pathSegments.sublist(0, 3).join('/')}'; } Future moveObbFile(File file, String appId) async { @@ -1449,7 +1449,7 @@ class AppsProvider with ChangeNotifier { Future getAppsDir() async { Directory appsDir = Directory( - '${(await getExternalStorageDirectory())!.path}/app_data', + '${(await getAppStorageDir()).path}/app_data', ); if (!appsDir.existsSync()) { appsDir.createSync(); diff --git a/lib/providers/settings_provider.dart b/lib/providers/settings_provider.dart index 43f4b70..933de5f 100644 --- a/lib/providers/settings_provider.dart +++ b/lib/providers/settings_provider.dart @@ -9,7 +9,6 @@ import 'package:obtainium/app_sources/github.dart'; import 'package:obtainium/main.dart'; import 'package:obtainium/providers/apps_provider.dart'; import 'package:obtainium/providers/source_provider.dart'; -import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_storage/shared_storage.dart' as saf; @@ -35,7 +34,7 @@ class SettingsProvider with ChangeNotifier { // Not done in constructor as we want to be able to await it Future initializeSettings() async { prefs = await SharedPreferences.getInstance(); - defaultAppDir = (await getExternalStorageDirectory())!.path; + defaultAppDir = (await getAppStorageDir()).path; notifyListeners(); } diff --git a/pubspec.lock b/pubspec.lock index 218286b..b12703d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -176,18 +176,18 @@ packages: dependency: transitive description: name: cross_file - sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" + sha256: "942a4791cd385a68ccb3b32c71c427aba508a1bb949b86dff2adbe4049f16239" url: "https://pub.dev" source: hosted - version: "0.3.4+2" + version: "0.3.5" crypto: dependency: "direct main" description: name: crypto - sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.0.7" csslib: dependency: transitive description: @@ -216,10 +216,10 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: "49413c8ca514dea7633e8def233b25efdf83ec8522955cc2c0e3ad802927e7c6" + sha256: dd0e8e02186b2196c7848c9d394a5fd6e5b57a43a546082c5820b1ec72317e33 url: "https://pub.dev" source: hosted - version: "12.1.0" + version: "12.2.0" device_info_plus_platform_interface: dependency: transitive description: @@ -304,18 +304,18 @@ packages: dependency: "direct main" description: name: flex_color_picker - sha256: "8f753a1a026a13ea5cc5eddbae3ceb886f2537569ab2e5208efb1e3bb5af72ff" + sha256: f5b0b53d4ae0d59b1e28dfc21d5398e5028cf8e764518e491a52fd050aa23881 url: "https://pub.dev" source: hosted - version: "3.7.1" + version: "3.7.2" flex_seed_scheme: dependency: transitive description: name: flex_seed_scheme - sha256: b06d8b367b84cbf7ca5c5603c858fa5edae88486c4e4da79ac1044d73b6c62ec + sha256: "828291a5a4d4283590541519d8b57821946660ac61d2e07d955f81cfcab22e5d" url: "https://pub.dev" source: hosted - version: "3.5.1" + version: "3.6.1" flutter: dependency: "direct main" description: flutter @@ -482,10 +482,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: c2fe1001710127dfa7da89977a08d591398370d099aacdaa6d44da7eb14b8476 + sha256: "306f0596590e077338312f38837f595c04f28d6cdeeac392d3d74df2f0003687" url: "https://pub.dev" source: hosted - version: "2.0.31" + version: "2.0.32" flutter_test: dependency: transitive description: flutter @@ -676,18 +676,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "3b4c1fc3aa55ddc9cd4aa6759984330d5c8e66aa7702a6223c61540dc6380c37" + sha256: e122c5ea805bb6773bb12ce667611265980940145be920cd09a4b0ec0285cb16 url: "https://pub.dev" source: hosted - version: "2.2.19" + version: "2.2.20" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" + sha256: efaec349ddfc181528345c56f8eda9d6cccd71c177511b132c6a0ddaefaa2738 url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.3" path_provider_linux: dependency: transitive description: @@ -796,10 +796,10 @@ packages: dependency: transitive description: name: pointer_interceptor_ios - sha256: a6906772b3205b42c44614fcea28f818b1e5fdad73a4ca742a7bd49818d9c917 + sha256: "03c5fa5896080963ab4917eeffda8d28c90f22863a496fb5ba13bc10943e40e4" url: "https://pub.dev" source: hosted - version: "0.10.1" + version: "0.10.1+1" pointer_interceptor_platform_interface: dependency: transitive description: @@ -828,10 +828,10 @@ packages: dependency: "direct main" description: name: share_plus - sha256: "3424e9d5c22fd7f7590254ba09465febd6f8827c8b19a44350de4ac31d92d3a6" + sha256: "14c8860d4de93d3a7e53af51bff479598c4e999605290756bbbe45cf65b37840" url: "https://pub.dev" source: hosted - version: "12.0.0" + version: "12.0.1" share_plus_platform_interface: dependency: transitive description: @@ -860,10 +860,10 @@ packages: dependency: transitive description: name: shared_preferences_foundation - sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" + sha256: "1c33a907142607c40a7542768ec9badfd16293bac51da3a4482623d15845f88b" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.5.5" shared_preferences_linux: dependency: transitive description: @@ -927,14 +927,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.1" - sprintf: - dependency: transitive - description: - name: sprintf - sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://pub.dev" - source: hosted - version: "7.0.0" sqflite: dependency: "direct main" description: @@ -1067,10 +1059,10 @@ packages: dependency: transitive description: name: url_launcher_ios - sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 + sha256: "6b63f1441e4f653ae799166a72b50b1767321ecc263a57aadf825a7a2a5477d9" url: "https://pub.dev" source: hosted - version: "6.3.4" + version: "6.3.5" url_launcher_linux: dependency: transitive description: @@ -1083,10 +1075,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f + sha256: "8262208506252a3ed4ff5c0dc1e973d2c0e0ef337d0a074d35634da5d44397c9" url: "https://pub.dev" source: hosted - version: "3.2.3" + version: "3.2.4" url_launcher_platform_interface: dependency: transitive description: @@ -1115,10 +1107,10 @@ packages: dependency: transitive description: name: uuid - sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + sha256: a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8 url: "https://pub.dev" source: hosted - version: "4.5.1" + version: "4.5.2" vector_math: dependency: transitive description: @@ -1171,10 +1163,10 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: fea63576b3b7e02b2df8b78ba92b48ed66caec2bb041e9a0b1cbd586d5d80bfd + sha256: "5de608fdea144d4370c21d4c80f0528135529e0180aa129790064c345e457a43" url: "https://pub.dev" source: hosted - version: "3.23.1" + version: "3.23.2" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 038432b..72d0595 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.2.7+2323 +version: 1.2.8+2324 environment: sdk: ^3.8.1