use of im.actor.core.entity.content.DocumentContent in project actor-platform by actorapp.
the class JsContent method createContent.
public static JsContent createContent(AbsContent src, int sender) {
JsMessenger messenger = JsMessenger.getInstance();
JsContent content;
if (src instanceof TextContent) {
TextContent textContent = (TextContent) src;
if (textContent.getTextMessageEx() instanceof ApiTextModernMessage) {
ApiTextModernMessage modernMessage = (ApiTextModernMessage) textContent.getTextMessageEx();
String text = modernMessage.getText();
JsParagraphStyle paragraphStyle = JsParagraphStyle.create(modernMessage.getStyle());
JsArray<JsAttach> attaches = JsArray.createArray().cast();
for (ApiTextModernAttach srcAttach : modernMessage.getAttaches()) {
JsArray<JsAttachField> fields = JsArray.createArray().cast();
for (ApiTextModernField f : srcAttach.getFields()) {
boolean isShort = f.isShort() != null ? f.isShort() : true;
fields.push(JsAttachField.create(f.getTitle(), f.getValue(), isShort));
}
attaches.push(JsAttach.create(srcAttach.getTitle(), srcAttach.getTitleUrl(), srcAttach.getText(), JsParagraphStyle.create(srcAttach.getStyle()), fields));
}
content = JsContentTextModern.create(text, paragraphStyle, attaches);
} else {
content = JsContentText.create(((TextContent) src).getText());
}
} else if (src instanceof ServiceContent) {
content = JsContentService.create(messenger.getFormatter().formatFullServiceMessage(sender, (ServiceContent) src, false));
} else if (src instanceof DocumentContent) {
DocumentContent doc = (DocumentContent) src;
String fileName = doc.getName();
String fileExtension = doc.getExt();
String fileSize = messenger.getFormatter().formatFileSize(doc.getSource().getSize());
String fileUrl = null;
if (doc.getSource() instanceof FileRemoteSource) {
fileUrl = messenger.getFileUrl(((FileRemoteSource) doc.getSource()).getFileReference());
}
boolean isUploading = doc.getSource() instanceof FileLocalSource;
String thumb = null;
if (doc.getFastThumb() != null) {
String thumbBase64 = Base64Utils.toBase64(doc.getFastThumb().getImage());
thumb = "data:image/jpg;base64," + thumbBase64;
}
if (src instanceof PhotoContent && thumb != null) {
PhotoContent photoContent = (PhotoContent) src;
content = JsContentPhoto.create(fileName, fileExtension, fileSize, photoContent.getW(), photoContent.getH(), thumb, fileUrl, isUploading);
} else if (src instanceof AnimationContent) {
AnimationContent animationContent = (AnimationContent) src;
content = JsContentAnimation.create(fileName, fileExtension, fileSize, animationContent.getW(), animationContent.getH(), thumb, fileUrl, isUploading);
} else if (src instanceof VoiceContent) {
VoiceContent voiceContent = (VoiceContent) src;
content = JsContentVoice.create(fileName, fileExtension, fileSize, fileUrl, isUploading, voiceContent.getDuration());
} else {
content = JsContentDocument.create(fileName, fileExtension, fileSize, thumb, fileUrl, isUploading);
}
} else if (src instanceof StickerContent) {
StickerContent sticker = (StickerContent) src;
ImageLocation stickerImage = sticker.getImage256();
if (sticker.getImage512() != null) {
stickerImage = sticker.getImage512();
}
String fileUrl = messenger.getFileUrl(stickerImage.getReference());
String fileSize = messenger.getFormatter().formatFileSize(stickerImage.getReference().getFileSize());
content = JsContentSticker.create(stickerImage.getReference().getFileName(), ".webp", fileSize, stickerImage.getWidth(), stickerImage.getHeight(), null, fileUrl, false);
} else if (src instanceof ContactContent) {
ContactContent contactContent = (ContactContent) src;
JsArrayString phones = JsArray.createArray().cast();
JsArrayString emails = JsArray.createArray().cast();
for (String s : contactContent.getEmails()) {
emails.push(s);
}
for (String s : contactContent.getPhones()) {
phones.push(s);
}
content = JsContentContact.create(contactContent.getName(), contactContent.getPhoto64(), phones, emails);
} else if (src instanceof LocationContent) {
LocationContent locationContent = (LocationContent) src;
content = JsContentLocation.create(locationContent.getLongitude(), locationContent.getLatitude(), locationContent.getStreet(), locationContent.getPlace());
} else {
content = JsContentUnsupported.create();
}
return content;
}
use of im.actor.core.entity.content.DocumentContent in project actor-platform by actorapp.
the class JsBindingModule method onFileLoaded.
@Override
public void onFileLoaded(HashSet<Long> fileId) {
if (dialogsList != null) {
for (JsDisplayListBind<JsDialog, Dialog> b : dialogsList.getActiveBinds()) {
b.startReconverting();
for (Dialog dialog : b.getRawItems()) {
if (checkAvatar(dialog.getDialogAvatar(), fileId)) {
b.forceReconvert(dialog.getEngineId());
}
}
b.stopReconverting();
}
}
if (dialogsGroupedList != null) {
ArrayList<DialogGroup> groups = context().getMessagesModule().getDialogGroupsVM().getGroupsValueModel().get();
if (groups != null) {
outer: for (DialogGroup g : groups) {
for (DialogSmall ds : g.getDialogs()) {
if (checkAvatar(ds.getAvatar(), fileId)) {
context().getMessagesModule().getDialogGroupsVM().getGroupsValueModel().forceNotify();
break outer;
}
}
}
}
}
if (contactsList != null) {
for (JsDisplayListBind<JsContact, Contact> b : contactsList.getActiveBinds()) {
b.startReconverting();
for (Contact contact : b.getRawItems()) {
if (checkAvatar(contact.getAvatar(), fileId)) {
b.forceReconvert(contact.getEngineId());
}
}
b.stopReconverting();
}
}
for (JsDisplayList<JsMessage, Message> messageList : messageLists.values()) {
for (JsDisplayListBind<JsMessage, Message> b : messageList.getActiveBinds()) {
b.startReconverting();
for (Message message : b.getRawItems()) {
UserVM user = context().getUsersModule().getUsers().get(message.getSenderId());
if (checkAvatar(user.getAvatar().get(), fileId)) {
b.forceReconvert(message.getEngineId());
continue;
}
if (message.getContent() instanceof DocumentContent) {
DocumentContent doc = (DocumentContent) message.getContent();
if (doc.getSource() instanceof FileRemoteSource) {
if (fileId.contains(((FileRemoteSource) doc.getSource()).getFileReference().getFileId())) {
b.forceReconvert(message.getEngineId());
}
}
}
if (message.getContent() instanceof StickerContent) {
StickerContent content = (StickerContent) message.getContent();
if (content.getImage512() != null) {
long stickerFileId = content.getImage512().getReference().getFileId();
if (fileId.contains(stickerFileId)) {
b.forceReconvert(message.getEngineId());
}
} else if (content.getImage256() != null) {
long stickerFileId = content.getImage256().getReference().getFileId();
if (fileId.contains(stickerFileId)) {
b.forceReconvert(message.getEngineId());
}
}
}
}
b.stopReconverting();
}
}
for (JsBindedValue<JsUser> u : users.values()) {
int uid = u.get().getUid();
UserVM userVM = context().getUsersModule().getUsers().get(uid);
if (checkAvatar(userVM.getAvatar().get(), fileId)) {
u.changeValue(JsUser.fromUserVM(userVM, messenger));
}
}
for (JsBindedValue<JsGroup> g : groups.values()) {
int gid = g.get().getGid();
GroupVM groupVM = context().getGroupsModule().getGroupsCollection().get(gid);
if (checkAvatar(groupVM.getAvatar().get(), fileId)) {
g.changeValue(JsGroup.fromGroupVM(groupVM, messenger));
}
}
//
if (stickers != null) {
outer: for (StickerPack stickerPack : messenger.getAvailableStickersVM().getOwnStickerPacks().get()) {
for (Sticker s : stickerPack.getStickers()) {
if (s.getImage256() != null && fileId.contains(s.getImage256().getFileId())) {
messenger.getAvailableStickersVM().getOwnStickerPacks().forceNotify();
break outer;
}
}
}
}
}
use of im.actor.core.entity.content.DocumentContent in project actor-platform by actorapp.
the class SenderActor method preStart.
@Override
public void preStart() {
pendingMessages = new PendingMessagesStorage();
byte[] p = preferences().getBytes(PREFERENCES);
if (p != null) {
try {
pendingMessages = PendingMessagesStorage.fromBytes(p);
} catch (IOException e) {
e.printStackTrace();
}
}
boolean isChanged = false;
ArrayList<PendingMessage> messages = pendingMessages.getPendingMessages();
for (PendingMessage pending : messages.toArray(new PendingMessage[messages.size()])) {
if (pending.getContent() instanceof TextContent) {
performSendContent(pending.getPeer(), pending.getRid(), pending.getContent());
} else if (pending.getContent() instanceof DocumentContent) {
DocumentContent documentContent = (DocumentContent) pending.getContent();
if (documentContent.getSource() instanceof FileLocalSource) {
if (Storage.isFsPersistent()) {
performUploadFile(pending.getRid(), ((FileLocalSource) documentContent.getSource()).getFileDescriptor(), ((FileLocalSource) documentContent.getSource()).getFileName());
} else {
List<Long> rids = new ArrayList<>();
rids.add(pending.getRid());
context().getMessagesModule().getRouter().onMessagesDeleted(pending.getPeer(), rids);
pendingMessages.getPendingMessages().remove(pending);
isChanged = true;
}
} else {
performSendContent(pending.getPeer(), pending.getRid(), pending.getContent());
}
}
}
if (isChanged) {
savePending();
}
}
Aggregations