|
|
|
@ -3,30 +3,44 @@ package org.thoughtcrime.securesms.components;
|
|
|
|
|
import android.graphics.drawable.Drawable;
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
|
import androidx.annotation.Nullable;
|
|
|
|
|
|
|
|
|
|
import android.view.View;
|
|
|
|
|
import android.widget.ImageView;
|
|
|
|
|
|
|
|
|
|
import com.bumptech.glide.request.target.DrawableImageViewTarget;
|
|
|
|
|
|
|
|
|
|
import org.session.libsignal.utilities.SettableFuture;
|
|
|
|
|
|
|
|
|
|
import java.lang.ref.WeakReference;
|
|
|
|
|
|
|
|
|
|
public class GlideDrawableListeningTarget extends DrawableImageViewTarget {
|
|
|
|
|
|
|
|
|
|
private final SettableFuture<Boolean> loaded;
|
|
|
|
|
private final WeakReference<View> loadingView;
|
|
|
|
|
|
|
|
|
|
public GlideDrawableListeningTarget(@NonNull ImageView view, @NonNull SettableFuture<Boolean> loaded) {
|
|
|
|
|
public GlideDrawableListeningTarget(@NonNull ImageView view, @Nullable View loadingView, @NonNull SettableFuture<Boolean> loaded) {
|
|
|
|
|
super(view);
|
|
|
|
|
this.loaded = loaded;
|
|
|
|
|
this.loadingView = new WeakReference<View>(loadingView);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void setResource(@Nullable Drawable resource) {
|
|
|
|
|
super.setResource(resource);
|
|
|
|
|
loaded.set(true);
|
|
|
|
|
|
|
|
|
|
if (loadingView.get() != null) {
|
|
|
|
|
loadingView.get().setVisibility(View.GONE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onLoadFailed(@Nullable Drawable errorDrawable) {
|
|
|
|
|
super.onLoadFailed(errorDrawable);
|
|
|
|
|
loaded.set(true);
|
|
|
|
|
|
|
|
|
|
if (loadingView.get() != null) {
|
|
|
|
|
loadingView.get().setVisibility(View.GONE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|