From 12be2276204150eed10690f0a43bcaa1b3e3fbfa Mon Sep 17 00:00:00 2001
From: magnusvs <magnusvons@gmail.com>
Date: Mon, 24 Aug 2020 09:08:10 +0200
Subject: [PATCH] Update Coil to 0.12.0 and fix breaking changes

---
 .../samples/image/CoilRecyclerViewSample.kt   | 10 +++----
 build.gradle                                  |  2 +-
 .../markwon/image/coil/CoilImagesPlugin.java  | 28 +++++++++----------
 3 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/app-sample/src/main/java/io/noties/markwon/app/samples/image/CoilRecyclerViewSample.kt b/app-sample/src/main/java/io/noties/markwon/app/samples/image/CoilRecyclerViewSample.kt
index b9f140fd..b776cc5b 100644
--- a/app-sample/src/main/java/io/noties/markwon/app/samples/image/CoilRecyclerViewSample.kt
+++ b/app-sample/src/main/java/io/noties/markwon/app/samples/image/CoilRecyclerViewSample.kt
@@ -2,8 +2,8 @@ package io.noties.markwon.app.samples.image
 
 import androidx.recyclerview.widget.LinearLayoutManager
 import coil.Coil
-import coil.request.LoadRequest
-import coil.request.RequestDisposable
+import coil.request.Disposable
+import coil.request.ImageRequest
 import coil.transform.RoundedCornersTransformation
 import io.noties.markwon.Markwon
 import io.noties.markwon.app.R
@@ -51,8 +51,8 @@ class CoilRecyclerViewSample : MarkwonRecyclerViewSample() {
     val markwon = Markwon.builder(context)
       .usePlugin(CoilImagesPlugin.create(
         object : CoilImagesPlugin.CoilStore {
-          override fun load(drawable: AsyncDrawable): LoadRequest {
-            return LoadRequest.Builder(context)
+          override fun load(drawable: AsyncDrawable): ImageRequest {
+            return ImageRequest.Builder(context)
               .transformations(
                 RoundedCornersTransformation(14F)
               )
@@ -61,7 +61,7 @@ class CoilRecyclerViewSample : MarkwonRecyclerViewSample() {
               .build()
           }
 
-          override fun cancel(disposable: RequestDisposable) {
+          override fun cancel(disposable: Disposable) {
             disposable.dispose()
           }
         },
diff --git a/build.gradle b/build.gradle
index f11f8b71..f19cfa96 100644
--- a/build.gradle
+++ b/build.gradle
@@ -58,7 +58,7 @@ ext {
 
     final def commonMarkVersion = '0.13.0'
     final def daggerVersion = '2.10'
-    final def coilVersion = '0.10.1'
+    final def coilVersion = '0.12.0'
 
     // please note that `pl.droidsonroids.gif:android-gif-drawable:1.2.15` is used due to the minimum
     // api level mismatch that Markwon supports (16) and later versions of AndroidGifDrawable (17).
diff --git a/markwon-image-coil/src/main/java/io/noties/markwon/image/coil/CoilImagesPlugin.java b/markwon-image-coil/src/main/java/io/noties/markwon/image/coil/CoilImagesPlugin.java
index 0019de21..605e5146 100644
--- a/markwon-image-coil/src/main/java/io/noties/markwon/image/coil/CoilImagesPlugin.java
+++ b/markwon-image-coil/src/main/java/io/noties/markwon/image/coil/CoilImagesPlugin.java
@@ -16,8 +16,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
 
 import coil.Coil;
 import coil.ImageLoader;
-import coil.request.LoadRequest;
-import coil.request.RequestDisposable;
+import coil.request.ImageRequest;
+import coil.request.Disposable;
 import coil.target.Target;
 import io.noties.markwon.AbstractMarkwonPlugin;
 import io.noties.markwon.MarkwonConfiguration;
@@ -37,9 +37,9 @@ public class CoilImagesPlugin extends AbstractMarkwonPlugin {
     public interface CoilStore {
 
         @NonNull
-        LoadRequest load(@NonNull AsyncDrawable drawable);
+        ImageRequest load(@NonNull AsyncDrawable drawable);
 
-        void cancel(@NonNull RequestDisposable disposable);
+        void cancel(@NonNull Disposable disposable);
     }
 
     @NonNull
@@ -47,14 +47,14 @@ public class CoilImagesPlugin extends AbstractMarkwonPlugin {
         return create(new CoilStore() {
             @NonNull
             @Override
-            public LoadRequest load(@NonNull AsyncDrawable drawable) {
-                return LoadRequest.builder(context)
+            public ImageRequest load(@NonNull AsyncDrawable drawable) {
+                return new ImageRequest.Builder(context)
                         .data(drawable.getDestination())
                         .build();
             }
 
             @Override
-            public void cancel(@NonNull RequestDisposable disposable) {
+            public void cancel(@NonNull Disposable disposable) {
                 disposable.dispose();
             }
         }, Coil.imageLoader(context));
@@ -66,14 +66,14 @@ public class CoilImagesPlugin extends AbstractMarkwonPlugin {
         return create(new CoilStore() {
             @NonNull
             @Override
-            public LoadRequest load(@NonNull AsyncDrawable drawable) {
-                return LoadRequest.builder(context)
+            public ImageRequest load(@NonNull AsyncDrawable drawable) {
+                return new ImageRequest.Builder(context)
                         .data(drawable.getDestination())
                         .build();
             }
 
             @Override
-            public void cancel(@NonNull RequestDisposable disposable) {
+            public void cancel(@NonNull Disposable disposable) {
                 disposable.dispose();
             }
         }, imageLoader);
@@ -116,7 +116,7 @@ public class CoilImagesPlugin extends AbstractMarkwonPlugin {
 
         private final CoilStore coilStore;
         private final ImageLoader imageLoader;
-        private final Map<AsyncDrawable, RequestDisposable> cache = new HashMap<>(2);
+        private final Map<AsyncDrawable, Disposable> cache = new HashMap<>(2);
 
         CoilAsyncDrawableLoader(@NonNull CoilStore coilStore, @NonNull ImageLoader imageLoader) {
             this.coilStore = coilStore;
@@ -127,13 +127,13 @@ public class CoilImagesPlugin extends AbstractMarkwonPlugin {
         public void load(@NonNull AsyncDrawable drawable) {
             final AtomicBoolean loaded = new AtomicBoolean(false);
             final Target target = new AsyncDrawableTarget(drawable, loaded);
-            final LoadRequest request = coilStore.load(drawable).newBuilder()
+            final ImageRequest request = coilStore.load(drawable).newBuilder()
                     .target(target)
                     .build();
             // @since 4.5.1 execute can return result _before_ disposable is created,
             //  thus `execute` would finish before we put disposable in cache (and thus result is
             //  not delivered)
-            final RequestDisposable disposable = imageLoader.execute(request);
+            final Disposable disposable = imageLoader.enqueue(request);
             // if flag was not set, then job is running (else - finished before we got here)
             if (!loaded.get()) {
                 // mark flag
@@ -144,7 +144,7 @@ public class CoilImagesPlugin extends AbstractMarkwonPlugin {
 
         @Override
         public void cancel(@NonNull AsyncDrawable drawable) {
-            final RequestDisposable disposable = cache.remove(drawable);
+            final Disposable disposable = cache.remove(drawable);
             if (disposable != null) {
                 coilStore.cancel(disposable);
             }