mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-08-20 05:19:28 +02: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,18 +115,23 @@ class _AddAppPageState extends State<AddAppPage> {
|
|||||||
additionalData);
|
additionalData);
|
||||||
await settingsProvider
|
await settingsProvider
|
||||||
.getInstallPermission();
|
.getInstallPermission();
|
||||||
// ignore: use_build_context_synchronously
|
// Only download the APK here if you need to for the package ID
|
||||||
var apkUrl = await appsProvider
|
if (sourceProvider
|
||||||
.confirmApkUrl(app, context);
|
.isTempId(app.id)) {
|
||||||
if (apkUrl == null) {
|
// ignore: use_build_context_synchronously
|
||||||
throw ObtainiumError('Cancelled');
|
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
|
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