package cl.monsoon.s1next.binding;
import android.content.Context;
import android.databinding.BindingAdapter;
import android.view.View;
import com.bumptech.glide.DrawableRequestBuilder;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import cl.monsoon.s1next.App;
import cl.monsoon.s1next.R;
import cl.monsoon.s1next.data.User;
import cl.monsoon.s1next.data.api.Api;
import cl.monsoon.s1next.data.pref.DownloadPreferencesManager;
import cl.monsoon.s1next.widget.BezelImageView;
public final class BezelImageViewBindingAdapter {
private BezelImageViewBindingAdapter() {}
/**
* Show default avatar if user hasn't logged in,
* otherwise show user's avatar.
*/
@BindingAdapter("user")
public static void loadUserAvatar(BezelImageView bezelImageView, User user) {
Context context = bezelImageView.getContext();
DownloadPreferencesManager downloadPreferencesManager = App.getAppComponent(context)
.getDownloadPreferencesManager();
if (user.isLogged()) {
// setup user's avatar
Glide.with(context)
.load(Api.getAvatarMediumUrl(user.getUid()))
.error(R.drawable.ic_drawer_avatar_placeholder)
.signature(downloadPreferencesManager.getAvatarCacheInvalidationIntervalSignature())
.transform(new CenterCrop(Glide.get(context).getBitmapPool()))
.into(bezelImageView);
} else {
// setup default avatar
Glide.with(context)
.load(R.drawable.ic_drawer_avatar_placeholder)
.signature(downloadPreferencesManager.getAvatarCacheInvalidationIntervalSignature())
.transform(new CenterCrop(Glide.get(context).getBitmapPool()))
.into(bezelImageView);
}
}
@BindingAdapter({"avatarDrawableRequestBuilder", "downloadPreferencesManager", "authorId"})
public static void loadAuthorAvatar(BezelImageView bezelImageView,
DrawableRequestBuilder<String> avatarDrawableRequestBuilder,
DownloadPreferencesManager downloadPreferencesManager,
String authorId) {
// whether need to download avatars
// depends on settings and Wi-Fi status
if (downloadPreferencesManager.isAvatarsDownload()) {
bezelImageView.setVisibility(View.VISIBLE);
String url = downloadPreferencesManager.isHighResolutionAvatarsDownload()
? Api.getAvatarMediumUrl(authorId)
: Api.getAvatarSmallUrl(authorId);
// show user's avatar
avatarDrawableRequestBuilder.signature(
downloadPreferencesManager.getAvatarCacheInvalidationIntervalSignature())
.load(url)
.into(bezelImageView);
} else {
bezelImageView.setVisibility(View.GONE);
}
}
}