/*
* Copyright (C) 2015 Actor LLC. <https://actor.im>
*/
package im.actor.core.js.entity;
import com.google.gwt.core.client.JavaScriptObject;
import im.actor.core.entity.ContentType;
import im.actor.core.entity.Dialog;
import im.actor.core.entity.GroupType;
import im.actor.core.entity.Peer;
import im.actor.core.entity.PeerType;
import im.actor.core.js.JsMessenger;
import im.actor.runtime.js.mvvm.JsEntityConverter;
public class JsDialog extends JavaScriptObject {
public static final JsEntityConverter<Dialog, JsDialog> CONVERTER = new JsEntityConverter<Dialog, JsDialog>() {
@Override
public JsDialog convert(Dialog src) {
JsMessenger messenger = JsMessenger.getInstance();
boolean showSender = false;
Peer peer = src.getPeer();
if (peer.getPeerType() == PeerType.GROUP) {
if (src.getMessageType() != ContentType.SERVICE && src.getMessageType() != ContentType.NONE) {
showSender = src.getSenderId() != 0;
}
}
String senderName = null;
if (showSender) {
senderName = messenger.getUsers().get(src.getSenderId()).getName().get();
}
String date = messenger.getFormatter().formatShortDate(src.getDate());
String fileUrl = null;
if (src.getDialogAvatar() != null && src.getDialogAvatar().getSmallImage() != null) {
fileUrl = messenger.getFileUrl(src.getDialogAvatar().getSmallImage().getFileReference());
}
boolean isChannel = peer.getPeerType() == PeerType.GROUP && messenger.getGroups().get(peer.getPeerId()).getGroupType() == GroupType.CHANNEL;
boolean highlightContent = src.getMessageType() != ContentType.TEXT;
String messageText = messenger.getFormatter().formatContentText(src.getSenderId(),
src.getMessageType(), src.getText(), src.getRelatedUid(), false);
JsPeerInfo peerInfo = JsPeerInfo.create(JsPeer.create(peer), src.getDialogTitle(), null, fileUrl,
Placeholders.getPlaceholder(peer.getPeerId()), isChannel);
String state = "unknown";
if (messenger.myUid() == src.getSenderId()) {
if (src.isRead()) {
state = "read";
} else if (src.isReceived()) {
state = "received";
} else {
state = "sent";
}
}
return JsDialog.create(peerInfo, date, senderName, showSender, messageText,
highlightContent, state, src.getUnreadCount());
}
@Override
public boolean isSupportOverlays() {
return false;
}
@Override
public JavaScriptObject buildOverlay(Dialog prev, Dialog current, Dialog next) {
return null;
}
};
public static native JsDialog create(JsPeerInfo peer,
String date,
String sender, boolean showSender,
String text, boolean isHighlighted,
String state, int counter)/*-{
return {peer: peer, text: text, date: date, sender: sender, showSender: showSender,
isHighlighted: isHighlighted, state:state, counter:counter };
}-*/;
protected JsDialog() {
}
}