diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index 7fcfe916a962c8a7443c099f1596d786e6c2af48..00056abf20cf5cdcaa373d2fd7a801943dbff6ce 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -1303,6 +1303,10 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl pagerAdapter.startCommand(command, xmppConnectionService); } + public boolean switchToSession(final String node) { + return pagerAdapter.switchToSession(node); + } + public void setupViewPager(ViewPager pager, TabLayout tabs) { pagerAdapter.setupViewPager(pager, tabs); } @@ -1420,6 +1424,21 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl notifyDataSetChanged(); } + public boolean switchToSession(final String node) { + if (sessions == null) return false; + + int i = 0; + for (CommandSession session : sessions) { + if (session.mNode.equals(node)) { + if (mPager != null) mPager.setCurrentItem(i + 2); + return true; + } + i++; + } + + return false; + } + @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 9ca8b274a04d0cfa486725d50765948ef1f71ea1..65682731efdbab0fe0e4fa74599b8cdadd3e5f56 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -2998,7 +2998,9 @@ public class ConversationFragment extends XmppFragment if (discoJid != null) commandJid = discoJid; } if (node != null && commandJid != null) { - conversation.startCommand(commandFor(commandJid, node), activity.xmppConnectionService); + if (!conversation.switchToSession(node)) { + conversation.startCommand(commandFor(commandJid, node), activity.xmppConnectionService); + } if (activity.xmppConnectionService.isOnboarding()) binding.tabLayout.setVisibility(View.GONE); } });