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