package com.badoo.chateau.example.ui.chat.messages.viewholders;
import android.content.res.Resources;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v4.widget.ContentLoadingProgressBar;
import android.text.TextUtils;
import android.view.View;
import com.badoo.chateau.data.models.payloads.ImagePayload;
import com.badoo.chateau.example.R;
import com.badoo.chateau.example.data.model.ExampleMessage;
import com.badoo.chateau.example.ui.util.ImageLoadingDrawable;
import com.facebook.drawee.drawable.ScalingUtils;
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.view.SimpleDraweeView;
public class ImageMessageViewHolder extends ChatBubbleViewHolder<ImagePayload> {
private final SimpleDraweeView mMessageImage;
private final ContentLoadingProgressBar mImageProgress;
public ImageMessageViewHolder(@NonNull View itemView) {
super(itemView);
mMessageImage = (SimpleDraweeView) itemView.findViewById(R.id.message_image);
mImageProgress = (ContentLoadingProgressBar) itemView.findViewById(R.id.message_imageProgress);
final Resources resources = itemView.getResources();
final int shortAnimTime = resources.getInteger(android.R.integer.config_shortAnimTime);
final GenericDraweeHierarchy hierarchy = new GenericDraweeHierarchyBuilder(resources)
.setFadeDuration(shortAnimTime)
.setProgressBarImage(new ImageLoadingDrawable(resources))
.setFailureImage(resources.getDrawable(R.drawable.ic_upload_failed), ScalingUtils.ScaleType.CENTER_INSIDE)
.setActualImageScaleType(ScalingUtils.ScaleType.FIT_CENTER)
.build();
mMessageImage.setHierarchy(hierarchy);
}
@Override
protected void bindPayload(ExampleMessage message, ImagePayload payload) {
final String imageUri;
if (!TextUtils.isEmpty(payload.getThumbnailUrl())) {
imageUri = payload.getThumbnailUrl();
}
else {
imageUri = payload.getImageUrl();
}
if (!TextUtils.isEmpty(imageUri) && !ImagePayload.PLACEHOLDER.equals(imageUri)) {
mMessageImage.setImageURI(Uri.parse(imageUri));
mImageProgress.setVisibility(View.GONE);
}
else {
//noinspection deprecation
mMessageImage.setImageDrawable(null);
mImageProgress.setVisibility(View.VISIBLE);
mImageProgress.show();
}
}
}