Merge pull request #284 from magnusvs/upgrade-coil-0.12.0
Update Coil to 0.12.0 and fix breaking changes
This commit is contained in:
commit
fa286287c8
@ -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()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -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).
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user