summaryrefslogtreecommitdiff
path: root/core/src/main
diff options
context:
space:
mode:
authorByteHamster <ByteHamster@users.noreply.github.com>2021-10-30 20:47:05 +0200
committerGitHub <noreply@github.com>2021-10-30 20:47:05 +0200
commit47034dfbab4edfed48d04dd4bc5f30c2a54833a6 (patch)
treeaa1fcc78059a8d98c482c0c13f59a0052a70b77e /core/src/main
parent9541d9459f9d162187eb1972e431d7ddb7080a1e (diff)
parentf3141760896c80de68fa0b79f1dc67b83ed4adf7 (diff)
downloadAntennaPod-47034dfbab4edfed48d04dd4bc5f30c2a54833a6.zip
Merge pull request #5506 from ByteHamster/fix-cover-mobile
Fix loading cover images on mobile when not allowed
Diffstat (limited to 'core/src/main')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/NoHttpStringLoader.java39
2 files changed, 40 insertions, 2 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java
index defe6c9f8..9b06d2138 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java
@@ -11,7 +11,6 @@ import com.bumptech.glide.Registry;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.load.DecodeFormat;
import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;
-import com.bumptech.glide.load.model.StringLoader;
import com.bumptech.glide.module.AppGlideModule;
import de.danoeh.antennapod.model.feed.EmbeddedChapterImage;
@@ -43,7 +42,7 @@ public class ApGlideModule extends AppGlideModule {
public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
registry.replace(String.class, InputStream.class, new MetadataRetrieverLoader.Factory(context));
registry.append(String.class, InputStream.class, new ApOkHttpUrlLoader.Factory());
- registry.append(String.class, InputStream.class, new StringLoader.StreamFactory());
+ registry.append(String.class, InputStream.class, new NoHttpStringLoader.StreamFactory());
registry.append(EmbeddedChapterImage.class, ByteBuffer.class, new ChapterImageModelLoader.Factory());
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/NoHttpStringLoader.java b/core/src/main/java/de/danoeh/antennapod/core/glide/NoHttpStringLoader.java
new file mode 100644
index 000000000..9cda3b1aa
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/glide/NoHttpStringLoader.java
@@ -0,0 +1,39 @@
+package de.danoeh.antennapod.core.glide;
+
+import android.net.Uri;
+import androidx.annotation.NonNull;
+import com.bumptech.glide.load.model.ModelLoader;
+import com.bumptech.glide.load.model.ModelLoaderFactory;
+import com.bumptech.glide.load.model.MultiModelLoaderFactory;
+import com.bumptech.glide.load.model.StringLoader;
+
+import java.io.InputStream;
+
+/**
+ * StringLoader that does not handle http/https urls. Used to avoid fallback to StringLoader when
+ * AntennaPod blocks mobile image loading.
+ */
+public final class NoHttpStringLoader extends StringLoader<InputStream> {
+
+ public static class StreamFactory implements ModelLoaderFactory<String, InputStream> {
+ @NonNull
+ @Override
+ public ModelLoader<String, InputStream> build(@NonNull MultiModelLoaderFactory multiFactory) {
+ return new NoHttpStringLoader(multiFactory.build(Uri.class, InputStream.class));
+ }
+
+ @Override
+ public void teardown() {
+ // Do nothing.
+ }
+ }
+
+ public NoHttpStringLoader(ModelLoader<Uri, InputStream> uriLoader) {
+ super(uriLoader);
+ }
+
+ @Override
+ public boolean handles(@NonNull String model) {
+ return !model.startsWith("http") && super.handles(model);
+ }
+}