private void onFileUploaded(long rid, FileReference fileReference) { PendingMessage msg = findPending(rid); if (msg == null) { return; } pendingMessages.getPendingMessages().remove(msg); AbsContent nContent; if (msg.getContent() instanceof PhotoContent) { PhotoContent basePhotoContent = (PhotoContent) msg.getContent(); nContent = PhotoContent.createRemotePhoto( fileReference, basePhotoContent.getW(), basePhotoContent.getH(), basePhotoContent.getFastThumb()); } else if (msg.getContent() instanceof VideoContent) { VideoContent baseVideoContent = (VideoContent) msg.getContent(); nContent = VideoContent.createRemoteVideo( fileReference, baseVideoContent.getW(), baseVideoContent.getH(), baseVideoContent.getDuration(), baseVideoContent.getFastThumb()); } else if (msg.getContent() instanceof VoiceContent) { VoiceContent baseVoiceContent = (VoiceContent) msg.getContent(); nContent = VoiceContent.createRemoteAudio(fileReference, baseVoiceContent.getDuration()); } else if (msg.getContent() instanceof AnimationContent) { AnimationContent baseAnimcationContent = (AnimationContent) msg.getContent(); nContent = AnimationContent.createRemoteAnimation( fileReference, baseAnimcationContent.getW(), baseAnimcationContent.getH(), baseAnimcationContent.getFastThumb()); } else if (msg.getContent() instanceof DocumentContent) { DocumentContent baseDocContent = (DocumentContent) msg.getContent(); nContent = DocumentContent.createRemoteDocument(fileReference, baseDocContent.getFastThumb()); } else { return; } pendingMessages .getPendingMessages() .add(new PendingMessage(msg.getPeer(), msg.getRid(), nContent)); context() .getMessagesModule() .getRouter() .onContentChanged(msg.getPeer(), msg.getRid(), nContent); performSendContent(msg.getPeer(), rid, nContent); fileUplaodingWakeLocks.remove(rid).releaseLock(); }
private PendingMessage findPending(long rid) { for (PendingMessage message : pendingMessages.getPendingMessages()) { if (message.getRid() == rid) { return message; } } return null; }
private void onSent(Peer peer, long rid) { for (PendingMessage pending : pendingMessages.getPendingMessages()) { if (pending.getRid() == rid && pending.getPeer().equals(peer)) { pendingMessages.getPendingMessages().remove(pending); break; } } savePending(); }
private void onFileUploadError(long rid) { PendingMessage msg = findPending(rid); if (msg == null) { return; } self().send(new MessageError(msg.getPeer(), msg.getRid())); fileUplaodingWakeLocks.remove(rid).releaseLock(); }
private void onError(Peer peer, long rid) { for (PendingMessage pending : pendingMessages.getPendingMessages()) { if (pending.getRid() == rid && pending.getPeer().equals(peer)) { pendingMessages.getPendingMessages().remove(pending); break; } } savePending(); context().getMessagesModule().getRouter().onOutgoingError(peer, rid); }
@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(); } }