public void setBuffer(int bufferId) { Log.d(TAG, "Setting buffer and chat is visible: " + getUserVisibleHint()); this.bufferId = bufferId; if (adapter != null && networks != null) { if (adapter.buffer != null && bufferId != adapter.buffer.getInfo().id) { updateMarkerLine(); } adapter.clearBuffer(); Buffer buffer = networks.getBufferById(bufferId); if (buffer != null) { adapter.setBuffer(buffer, networks); nickCompletionHelper = new NickCompletionHelper(buffer.getUsers().getUniqueUsers()); autoCompleteButton.setEnabled(true); inputField.setEnabled(true); if (getUserVisibleHint() == true) buffer.setDisplayed(true); BusProvider.getInstance() .post(new ManageChannelEvent(buffer.getInfo().id, ChannelAction.HIGHLIGHTS_READ)); // Move list to correct position if (adapter.buffer.getTopMessageShown() == 0) { backlogList.setSelection(adapter.getCount() - 1); } else { adapter.setListTopMessage(adapter.buffer.getTopMessageShown()); } } else { resetFragment(); } } }
private void updateRead() { Log.d(TAG, "Updating buffer read, chat is visible: " + getUserVisibleHint()); if (adapter.buffer != null) { // Don't save position if list is at bottom if (backlogList.getLastVisiblePosition() == adapter.getCount() - 1) { adapter.buffer.setTopMessageShown(0); } else { adapter.buffer.setTopMessageShown(adapter.getListTopMessageId()); } if (adapter.buffer.getUnfilteredSize() != 0) { BusProvider.getInstance() .post(new ManageChannelEvent(adapter.getBufferId(), ChannelAction.MARK_AS_READ)); BusProvider.getInstance() .post( new ManageMessageEvent( adapter.getBufferId(), adapter.buffer.getUnfilteredBacklogEntry(adapter.buffer.getUnfilteredSize() - 1) .messageId, MessageAction.LAST_SEEN)); } } }