@Override public void processMessage(Chat chat, org.jivesoftware.smack.packet.Message message) { if (message.getBody() == null) { // TODO: investigate why some message bodies are null return; } // TODO: implement builder pattern for domain Message and Chat classes final Message m = new Message(); m.setTimestamp(System.currentTimeMillis()); m.setBody(message.getBody()); m.setLocal(false); Log.d( TAG, String.format( "chatId %s message <%s> received from %s", currentChatId, m.getBody(), chat.getParticipant())); updateChatTimestamp(pocChat.getId()); ContentValues values = new ContentValues(); values.put(SQLiteHelper.COLUMN_BODY, m.getBody()); values.put(SQLiteHelper.COLUMN_TIMESTAMP, m.getTimestamp()); // current time values.put(SQLiteHelper.COLUMN_IS_LOCAL, m.isLocal() ? 1 : 0); values.put(SQLiteHelper.COLUMN_CHAT_ID, pocChat.getId()); // once insert is successful, loader updates the list automatically context.getContentResolver().insert(MessageProvider.URI_MESSAGES, values); // show the toast regardless if messages UI is opened showToast(context, m.getBody()); }
private void fireNewChatState(Chat chat, ChatState chatstate) { Iterator iterator = chat.getListeners().iterator(); do { if (!iterator.hasNext()) { break; } ChatMessageListener chatmessagelistener = (ChatMessageListener)iterator.next(); if (chatmessagelistener instanceof ChatStateListener) { ((ChatStateListener)chatmessagelistener).stateChanged(chat, chatstate); } } while (true); }
public void chatCreated(Chat chat, boolean flag) { chat.addMessageListener(this); }
@Override public void chatCreated(Chat chat, boolean isLocal) { chat.addMessageListener(this); }