diff --git a/app/src/main/java/org/fdroid/fdroid/Preferences.java b/app/src/main/java/org/fdroid/fdroid/Preferences.java index a1b244e14..36e4300a3 100644 --- a/app/src/main/java/org/fdroid/fdroid/Preferences.java +++ b/app/src/main/java/org/fdroid/fdroid/Preferences.java @@ -101,6 +101,7 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh public static final String PREF_UNSTABLE_UPDATES = "unstableUpdates"; public static final String PREF_KEEP_INSTALL_HISTORY = "keepInstallHistory"; public static final String PREF_SEND_TO_FDROID_METRICS = "sendToFdroidMetrics"; + public static final String PREF_USE_IPFS_GATEWAYS = "useIpfsGateways"; public static final String PREF_EXPERT = "expert"; public static final String PREF_FORCE_OLD_INDEX = "forceOldIndex"; public static final String PREF_PRIVILEGED_INSTALLER = "privilegedInstaller"; @@ -517,6 +518,10 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh } } + public boolean isIpfsEnabled() { + return preferences.getBoolean(PREF_USE_IPFS_GATEWAYS, IGNORED_B); + } + public boolean preventScreenshots() { return preferences.getBoolean(PREF_PREVENT_SCREENSHOTS, IGNORED_B); } diff --git a/app/src/main/java/org/fdroid/fdroid/net/DownloaderFactory.java b/app/src/main/java/org/fdroid/fdroid/net/DownloaderFactory.java index 1b22bf504..eb044446f 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/DownloaderFactory.java +++ b/app/src/main/java/org/fdroid/fdroid/net/DownloaderFactory.java @@ -65,7 +65,8 @@ public class DownloaderFactory extends org.fdroid.download.DownloaderFactory { Proxy proxy = NetCipher.getProxy(); DownloadRequest request = new DownloadRequest(indexFile, mirrors, proxy, repo.getUsername(), repo.getPassword(), tryFirst); - boolean oldIndex = Preferences.get().isForceOldIndexEnabled(); + Preferences prefs = Preferences.get(); + boolean oldIndex = prefs.isForceOldIndexEnabled(); boolean v1OrUnknown = repo.getFormatVersion() == null || repo.getFormatVersion() == IndexFormatVersion.ONE; if (oldIndex || v1OrUnknown) { @@ -73,9 +74,9 @@ public class DownloaderFactory extends org.fdroid.download.DownloaderFactory { downloader = new HttpDownloader(HTTP_MANAGER, request, destFile); } else { DownloadRequest r; - if (request.getIndexFile().getIpfsCidV1() == null) r = request; + if (request.getIndexFile().getIpfsCidV1() == null || !prefs.isIpfsEnabled()) r = request; else { - // add IPFS gateways to mirrors, because have have a CIDv1 + // add IPFS gateways to mirrors, because have have a CIDv1 and IPFS is enabled in preferences List m = new ArrayList<>(mirrors); m.addAll(IPFS_MIRRORS); r = new DownloadRequest(request.getIndexFile(), m, proxy, repo.getUsername(), diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 86c38ff92..638a3355b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -40,6 +40,8 @@ Store a log of all installs and uninstalls in a private store Send usage data Sends anonymous data weekly to F-Droid Metrics (requires "Keep install history") + Use IPFS gateways + Download files from IPFS mirrors, if supported by the repo. The %s Metric report is viewable in the Install History viewer Send version and UUID to servers diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 70bc0a748..5707821b8 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -190,6 +190,12 @@ android:summary="@string/send_to_fdroid_metrics_summary" android:defaultValue="false" android:dependency="expert" /> +