diff options
Diffstat (limited to 'src/main/java/eu/siacs/conversations/ui')
-rw-r--r-- | src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 11 | ||||
-rw-r--r-- | src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java | 21 |
2 files changed, 22 insertions, 10 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 3ec484087..2fb4e44f8 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -13,6 +13,7 @@ import android.os.Bundle; import android.os.Handler; import android.support.annotation.Nullable; import android.text.InputType; +import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.Gravity; @@ -157,7 +158,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa ConversationFragment.this.conversation.populateWithMessages(ConversationFragment.this.messageList); updateStatusMessages(); messageListAdapter.notifyDataSetChanged(); - int pos = getIndexOf(uuid,messageList); + int pos = Math.max(getIndexOf(uuid,messageList),0); messagesView.setSelectionFromTop(pos, pxOffset); messagesLoaded = true; if (messageLoaderToast != null) { @@ -210,7 +211,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } } - return 0; + return -1; } private final int KEYCHAIN_UNLOCK_NOT_REQUIRED = 0; @@ -813,11 +814,13 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa this.messagesLoaded = true; synchronized (this.messageList) { final Message first = conversation.getFirstUnreadMessage(); + final int bottom = Math.max(0, this.messageList.size() - 1); final int pos; if (first == null) { - pos = Math.max(0,this.messageList.size() - 1); + pos = bottom; } else { - pos = getIndexOf(first.getUuid(), this.messageList); + int i = getIndexOf(first.getUuid(), this.messageList); + pos = i < 0 ? bottom : i; } messagesView.setSelection(pos); } diff --git a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java index 548682dfb..17f9944fd 100644 --- a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java @@ -846,7 +846,16 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU private boolean handleJid(Invite invite) { List<Contact> contacts = xmppConnectionService.findContacts(invite.getJid()); - if (contacts.size() == 0) { + if (invite.isMuc()) { + Conversation muc = xmppConnectionService.findFirstMuc(invite.getJid()); + if (muc != null) { + switchToConversation(muc); + return true; + } else { + showJoinConferenceDialog(invite.getJid().toBareJid().toString()); + return false; + } + } else if (contacts.size() == 0) { showCreateContactDialog(invite.getJid().toString(),invite.getFingerprint()); return false; } else if (contacts.size() == 1) { @@ -1020,13 +1029,13 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU boolean invite() { if (jid != null) { - if (muc) { - showJoinConferenceDialog(jid); - } else { - return handleJid(this); - } + return handleJid(this); } return false; } + + public boolean isMuc() { + return muc; + } } } |