mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-31 13:33:28 +01:00 
			
		
		
		
	Add app only downloads APK if needed
This commit is contained in:
		| @@ -30,6 +30,11 @@ class FDroid extends AppSource { | |||||||
|   @override |   @override | ||||||
|   Future<String> apkUrlPrefetchModifier(String apkUrl) async => apkUrl; |   Future<String> apkUrlPrefetchModifier(String apkUrl) async => apkUrl; | ||||||
|  |  | ||||||
|  |   @override | ||||||
|  |   String? tryGettingAppIdFromURL(String standardUrl) { | ||||||
|  |     return Uri.parse(standardUrl).pathSegments.last; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   Future<APKDetails> getLatestAPKDetails( |   Future<APKDetails> getLatestAPKDetails( | ||||||
|       String standardUrl, List<String> additionalData) async { |       String standardUrl, List<String> additionalData) async { | ||||||
|   | |||||||
| @@ -115,11 +115,15 @@ class _AddAppPageState extends State<AddAppPage> { | |||||||
|                                                     additionalData); |                                                     additionalData); | ||||||
|                                             await settingsProvider |                                             await settingsProvider | ||||||
|                                                 .getInstallPermission(); |                                                 .getInstallPermission(); | ||||||
|  |                                             // Only download the APK here if you need to for the package ID | ||||||
|  |                                             if (sourceProvider | ||||||
|  |                                                 .isTempId(app.id)) { | ||||||
|                                               // ignore: use_build_context_synchronously |                                               // ignore: use_build_context_synchronously | ||||||
|                                               var apkUrl = await appsProvider |                                               var apkUrl = await appsProvider | ||||||
|                                                   .confirmApkUrl(app, context); |                                                   .confirmApkUrl(app, context); | ||||||
|                                               if (apkUrl == null) { |                                               if (apkUrl == null) { | ||||||
|                                               throw ObtainiumError('Cancelled'); |                                                 throw ObtainiumError( | ||||||
|  |                                                     'Cancelled'); | ||||||
|                                               } |                                               } | ||||||
|                                               app.preferredApkIndex = |                                               app.preferredApkIndex = | ||||||
|                                                   app.apkUrls.indexOf(apkUrl); |                                                   app.apkUrls.indexOf(apkUrl); | ||||||
| @@ -127,6 +131,7 @@ class _AddAppPageState extends State<AddAppPage> { | |||||||
|                                                   await appsProvider |                                                   await appsProvider | ||||||
|                                                       .downloadApp(app); |                                                       .downloadApp(app); | ||||||
|                                               app.id = downloadedApk.appId; |                                               app.id = downloadedApk.appId; | ||||||
|  |                                             } | ||||||
|                                             if (appsProvider.apps |                                             if (appsProvider.apps | ||||||
|                                                 .containsKey(app.id)) { |                                                 .containsKey(app.id)) { | ||||||
|                                               throw ObtainiumError( |                                               throw ObtainiumError( | ||||||
|   | |||||||
| @@ -163,6 +163,10 @@ class AppSource { | |||||||
|   Future<Map<String, String>> search(String query) { |   Future<Map<String, String>> search(String query) { | ||||||
|     throw NotImplementedError(); |     throw NotImplementedError(); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   String? tryGettingAppIdFromURL(String standardUrl) { | ||||||
|  |     return null; | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| ObtainiumError getObtainiumHttpError(Response res) { | ObtainiumError getObtainiumHttpError(Response res) { | ||||||
| @@ -240,7 +244,9 @@ class SourceProvider { | |||||||
|     APKDetails apk = |     APKDetails apk = | ||||||
|         await source.getLatestAPKDetails(standardUrl, additionalData); |         await source.getLatestAPKDetails(standardUrl, additionalData); | ||||||
|     return App( |     return App( | ||||||
|         id ?? generateTempID(names, source), |         id ?? | ||||||
|  |             source.tryGettingAppIdFromURL(standardUrl) ?? | ||||||
|  |             generateTempID(names, source), | ||||||
|         standardUrl, |         standardUrl, | ||||||
|         names.author[0].toUpperCase() + names.author.substring(1), |         names.author[0].toUpperCase() + names.author.substring(1), | ||||||
|         name.trim().isNotEmpty |         name.trim().isNotEmpty | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user