This commit is contained in:
Dimitry Ivanov 2020-08-26 12:49:36 +03:00
commit d41137f6cf
3 changed files with 20 additions and 20 deletions

View File

@ -2,8 +2,8 @@ package io.noties.markwon.app.samples.image
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import coil.Coil import coil.Coil
import coil.request.LoadRequest import coil.request.Disposable
import coil.request.RequestDisposable import coil.request.ImageRequest
import coil.transform.RoundedCornersTransformation import coil.transform.RoundedCornersTransformation
import io.noties.markwon.Markwon import io.noties.markwon.Markwon
import io.noties.markwon.app.R import io.noties.markwon.app.R
@ -51,8 +51,8 @@ class CoilRecyclerViewSample : MarkwonRecyclerViewSample() {
val markwon = Markwon.builder(context) val markwon = Markwon.builder(context)
.usePlugin(CoilImagesPlugin.create( .usePlugin(CoilImagesPlugin.create(
object : CoilImagesPlugin.CoilStore { object : CoilImagesPlugin.CoilStore {
override fun load(drawable: AsyncDrawable): LoadRequest { override fun load(drawable: AsyncDrawable): ImageRequest {
return LoadRequest.Builder(context) return ImageRequest.Builder(context)
.transformations( .transformations(
RoundedCornersTransformation(14F) RoundedCornersTransformation(14F)
) )
@ -61,7 +61,7 @@ class CoilRecyclerViewSample : MarkwonRecyclerViewSample() {
.build() .build()
} }
override fun cancel(disposable: RequestDisposable) { override fun cancel(disposable: Disposable) {
disposable.dispose() disposable.dispose()
} }
}, },

View File

@ -58,7 +58,7 @@ ext {
final def commonMarkVersion = '0.13.0' final def commonMarkVersion = '0.13.0'
final def daggerVersion = '2.10' 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 // 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). // api level mismatch that Markwon supports (16) and later versions of AndroidGifDrawable (17).

View File

@ -16,8 +16,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
import coil.Coil; import coil.Coil;
import coil.ImageLoader; import coil.ImageLoader;
import coil.request.LoadRequest; import coil.request.ImageRequest;
import coil.request.RequestDisposable; import coil.request.Disposable;
import coil.target.Target; import coil.target.Target;
import io.noties.markwon.AbstractMarkwonPlugin; import io.noties.markwon.AbstractMarkwonPlugin;
import io.noties.markwon.MarkwonConfiguration; import io.noties.markwon.MarkwonConfiguration;
@ -37,9 +37,9 @@ public class CoilImagesPlugin extends AbstractMarkwonPlugin {
public interface CoilStore { public interface CoilStore {
@NonNull @NonNull
LoadRequest load(@NonNull AsyncDrawable drawable); ImageRequest load(@NonNull AsyncDrawable drawable);
void cancel(@NonNull RequestDisposable disposable); void cancel(@NonNull Disposable disposable);
} }
@NonNull @NonNull
@ -47,14 +47,14 @@ public class CoilImagesPlugin extends AbstractMarkwonPlugin {
return create(new CoilStore() { return create(new CoilStore() {
@NonNull @NonNull
@Override @Override
public LoadRequest load(@NonNull AsyncDrawable drawable) { public ImageRequest load(@NonNull AsyncDrawable drawable) {
return LoadRequest.builder(context) return new ImageRequest.Builder(context)
.data(drawable.getDestination()) .data(drawable.getDestination())
.build(); .build();
} }
@Override @Override
public void cancel(@NonNull RequestDisposable disposable) { public void cancel(@NonNull Disposable disposable) {
disposable.dispose(); disposable.dispose();
} }
}, Coil.imageLoader(context)); }, Coil.imageLoader(context));
@ -66,14 +66,14 @@ public class CoilImagesPlugin extends AbstractMarkwonPlugin {
return create(new CoilStore() { return create(new CoilStore() {
@NonNull @NonNull
@Override @Override
public LoadRequest load(@NonNull AsyncDrawable drawable) { public ImageRequest load(@NonNull AsyncDrawable drawable) {
return LoadRequest.builder(context) return new ImageRequest.Builder(context)
.data(drawable.getDestination()) .data(drawable.getDestination())
.build(); .build();
} }
@Override @Override
public void cancel(@NonNull RequestDisposable disposable) { public void cancel(@NonNull Disposable disposable) {
disposable.dispose(); disposable.dispose();
} }
}, imageLoader); }, imageLoader);
@ -116,7 +116,7 @@ public class CoilImagesPlugin extends AbstractMarkwonPlugin {
private final CoilStore coilStore; private final CoilStore coilStore;
private final ImageLoader imageLoader; 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) { CoilAsyncDrawableLoader(@NonNull CoilStore coilStore, @NonNull ImageLoader imageLoader) {
this.coilStore = coilStore; this.coilStore = coilStore;
@ -127,13 +127,13 @@ public class CoilImagesPlugin extends AbstractMarkwonPlugin {
public void load(@NonNull AsyncDrawable drawable) { public void load(@NonNull AsyncDrawable drawable) {
final AtomicBoolean loaded = new AtomicBoolean(false); final AtomicBoolean loaded = new AtomicBoolean(false);
final Target target = new AsyncDrawableTarget(drawable, loaded); final Target target = new AsyncDrawableTarget(drawable, loaded);
final LoadRequest request = coilStore.load(drawable).newBuilder() final ImageRequest request = coilStore.load(drawable).newBuilder()
.target(target) .target(target)
.build(); .build();
// @since 4.5.1 execute can return result _before_ disposable is created, // @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 // thus `execute` would finish before we put disposable in cache (and thus result is
// not delivered) // 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 flag was not set, then job is running (else - finished before we got here)
if (!loaded.get()) { if (!loaded.get()) {
// mark flag // mark flag
@ -144,7 +144,7 @@ public class CoilImagesPlugin extends AbstractMarkwonPlugin {
@Override @Override
public void cancel(@NonNull AsyncDrawable drawable) { public void cancel(@NonNull AsyncDrawable drawable) {
final RequestDisposable disposable = cache.remove(drawable); final Disposable disposable = cache.remove(drawable);
if (disposable != null) { if (disposable != null) {
coilStore.cancel(disposable); coilStore.cancel(disposable);
} }