package it.slyce.messaging.message.messageItem.master.media;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.view.View;
import com.bumptech.glide.Glide;
import it.slyce.messaging.message.MediaMessage;
import it.slyce.messaging.message.MessageSource;
import it.slyce.messaging.utils.MediaUtils;
import it.slyce.messaging.utils.DateUtils;
import it.slyce.messaging.ViewImageActivity;
import it.slyce.messaging.message.messageItem.MessageItem;
import it.slyce.messaging.message.messageItem.MessageItemType;
import it.slyce.messaging.message.messageItem.MessageViewHolder;
/**
* Created by matthewpage on 6/27/16.
*/
public abstract class MessageMediaItem extends MessageItem {
private Context context;
public MessageMediaItem(MediaMessage mediaMessage, Context context) {
super(mediaMessage);
this.context = context;
}
@Override
public void buildMessageItem(
MessageViewHolder messageViewHolder) {
if (message != null && messageViewHolder != null && messageViewHolder instanceof MessageMediaViewHolder) {
final MessageMediaViewHolder messageMediaViewHolder = (MessageMediaViewHolder) messageViewHolder;
// Get content
float widthToHeightRatio = MediaUtils.getWidthToHeightRatio(getMediaMessage().getUrl(), context);
date = DateUtils.getTimestamp(context, message.getDate());
final String mediaUrl = getMediaMessage().getUrl();
this.avatarUrl = message.getAvatarUrl();
// Populate views with content
messageMediaViewHolder.timestamp.setText(date != null ? date : "");
messageMediaViewHolder.initials.setText(initials != null ? initials : "");
messageMediaViewHolder.media.setWidthToHeightRatio(widthToHeightRatio);
messageMediaViewHolder.media.setImageUrlToLoadOnLayout(mediaUrl);
if (isFirstConsecutiveMessageFromSource) {
Glide.with(context).load(avatarUrl).into(messageMediaViewHolder.avatar);
}
messageViewHolder.avatar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (messageMediaViewHolder.customSettings.userClicksAvatarPictureListener != null)
messageMediaViewHolder.customSettings.userClicksAvatarPictureListener.userClicksAvatarPhoto(message.getUserId());
}
});
messageMediaViewHolder.media.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, ViewImageActivity.class);
intent.putExtra("URL", mediaUrl);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
messageMediaViewHolder.avatar.setVisibility(isFirstConsecutiveMessageFromSource && !TextUtils.isEmpty(avatarUrl) ? View.VISIBLE : View.INVISIBLE);
messageMediaViewHolder.avatarContainer.setVisibility(isFirstConsecutiveMessageFromSource ? View.VISIBLE : View.INVISIBLE);
messageMediaViewHolder.initials.setVisibility(isFirstConsecutiveMessageFromSource && TextUtils.isEmpty(avatarUrl) ? View.VISIBLE : View.GONE);
messageMediaViewHolder.media.setVisibility(!TextUtils.isEmpty(mediaUrl) ? View.VISIBLE : View.INVISIBLE);
messageMediaViewHolder.timestamp.setVisibility(isLastConsecutiveMessageFromSource ? View.VISIBLE : View.GONE);
}
}
@Override
public MessageItemType getMessageItemType() {
if (message.getSource() == MessageSource.EXTERNAL_USER) {
return MessageItemType.INCOMING_MEDIA;
} else {
return MessageItemType.OUTGOING_MEDIA;
}
}
@Override
public MessageSource getMessageSource() {
return message.getSource();
}
public MediaMessage getMediaMessage() {
return (MediaMessage)message;
}
public boolean dateNeedsUpdated(long time) {
return DateUtils.dateNeedsUpdated(context, time, date);
}
public void setInitials(String initials) {
this.initials = initials;
}
}