@Override public void onFinishComposing() { messagingActionHandler.sendEmptyMessage(MSG_REMOVE_COMPOSER); Util.hideSoftKeyboard(hostingActivityRef.get(), getView()); messagingActionHandler.sendEmptyMessage(MSG_SEND_PENDING_CONTEXT_MESSAGE); if (!TextUtils.isEmpty(composerEditText.getText().toString().trim()) || pendingAttachments.size() > 0) { CompoundMessage compoundMessage = new CompoundMessage(); compoundMessage.setBody(composerEditText.getText().toString().trim()); compoundMessage.setRead(true); compoundMessage.setCustomData(ApptentiveInternal.getInstance().getAndClearCustomData()); compoundMessage.setAssociatedImages(new ArrayList<ImageItem>(pendingAttachments)); ConversationProxy conversation = getConversation(); if (conversation != null && conversation.hasActiveState()) { compoundMessage.setSenderId(conversation.getPerson().getId()); } messagingActionHandler.sendMessage(messagingActionHandler.obtainMessage(MSG_START_SENDING, compoundMessage)); composingViewSavedState = null; composerEditText.getText().clear(); pendingAttachments.clear(); clearPendingComposingMessage(); } showFab(); showProfileButton(); }
public static ApptentiveMessage fromJson(String json) { try { // If KEY_TYPE is set to CompoundMessage or not set, treat them as CompoundMessage ApptentiveMessage.Type type = ApptentiveMessage.Type.CompoundMessage; JSONObject root = new JSONObject(json); if (!root.isNull(ApptentiveMessage.KEY_TYPE)) { String typeStr = root.getString(ApptentiveMessage.KEY_TYPE); if (!StringUtils.isNullOrEmpty(typeStr)) { type = ApptentiveMessage.Type.valueOf(typeStr); } } switch (type) { case CompoundMessage: return new CompoundMessage(json); case unknown: break; default: break; } } catch (JSONException e) { ApptentiveLog.v(MESSAGES, e, "Error parsing json as Message: %s", json); logException(e); } catch (IllegalArgumentException e) { // Exception treated as unknown type logException(e); } return null; } }
@Override protected boolean execute(Conversation conversation) { CompoundMessage message = new CompoundMessage(); message.setBody(text); message.setRead(true); message.setHidden(true); message.setSenderId(conversation.getPerson().getId()); message.setAssociatedFiles(null); conversation.getMessageManager().sendMessage(message); return true; } }, "send attachment text");
@Test public void textMessageRoundTrip() throws JSONException { String exampleMessage = loadTextAssetAsString(TEST_DATA_DIR + "testTextMessageRoundTrip.json"); CompoundMessage message = new CompoundMessage(exampleMessage); assertNotNull(message); String recoveredMessage = message.toString(); assertEquals(true, recoveredMessage.contains("\"id\":\"520a84fe4712c71b65000005\"")); assertEquals(true, recoveredMessage.contains("\"nonce\":\"33b042735704283c0407f22e6d6f8c6fcb0d2f073bf964f76d36ef176ec26472\"")); assertEquals(true, recoveredMessage.contains("\"created_at\":1.376421118499E9")); assertEquals(true, recoveredMessage.contains("\"client_created_at\":1376421112")); assertEquals(true, recoveredMessage.contains("\"client_created_at_utc_offset\":-25200")); assertEquals(true, recoveredMessage.contains("\"type\":\"CompoundMessage\"")); assertEquals(true, recoveredMessage.contains("\"name\":\"Sky Kelsey\"")); assertEquals(true, recoveredMessage.contains("\"id\":\"4de48b826688000001000007\"")); assertEquals(true, recoveredMessage.contains("\"body\":\"Test reply via email.\"")); } }
return false; // TODO: add error message CompoundMessage message = new CompoundMessage();
CompoundMessage message = new CompoundMessage(); message.setBody(contextMessage.getBody()); message.setAutomated(true);
@Override protected boolean execute(Conversation conversation) { if (is == null) { return false; // TODO: add error message } CompoundMessage message = new CompoundMessage(); // No body, just attachment message.setBody(null); message.setRead(true); message.setHidden(true); message.setSenderId(conversation.getPerson().getId()); ArrayList<StoredFile> attachmentStoredFiles = new ArrayList<StoredFile>(); String localFilePath = Util.generateCacheFilePathFromNonceOrPrefix(ApptentiveInternal.getInstance().getApplicationContext(), message.getNonce(), null); String extension = MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType); if (!TextUtils.isEmpty(extension)) { localFilePath += "." + extension; } // When created from InputStream, there is no source file uri or path, thus just use the cache file path StoredFile storedFile = Util.createLocalStoredFile(is, localFilePath, localFilePath, mimeType); if (storedFile == null) { return false; // TODO: add error message } storedFile.setId(message.getNonce()); attachmentStoredFiles.add(storedFile); message.setAssociatedFiles(attachmentStoredFiles); conversation.getMessageManager().sendMessage(message); return true; } }, "add unread message listener");