Change summary
src/main/java/eu/siacs/conversations/entities/Conversation.java | 19 +
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 4
2 files changed, 22 insertions(+), 1 deletion(-)
Detailed changes
@@ -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) {
@@ -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);
}
});