Only setup the command pager when not already set up

Stephen Paul Weber created

Otherwise it gets confused and blanks itself out.

Change summary

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 44 
1 file changed, 23 insertions(+), 21 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java 🔗

@@ -2503,28 +2503,30 @@ public class ConversationFragment extends XmppFragment
                 .getNotificationService()
                 .setOpenConversation(this.conversation);
 
-        conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout);
-        commandAdapter = new CommandAdapter((XmppActivity) getActivity());
-        binding.commandsView.setAdapter(commandAdapter);
-        binding.commandsView.setOnItemClickListener((parent, view, position, id) -> {
-            conversation.startCommand(commandAdapter.getItem(position), activity.xmppConnectionService);
-        });
-        Jid commandJid = conversation.getContact().resourceWhichSupport(Namespace.COMMANDS);
-        if (commandJid != null) {
-            binding.tabLayout.setVisibility(View.VISIBLE);
-            activity.xmppConnectionService.fetchCommands(conversation.getAccount(), commandJid, (a, iq) -> {
-                if (iq.getType() == IqPacket.TYPE.RESULT) {
-                    activity.runOnUiThread(() -> {
-                        for (Element child : iq.query().getChildren()) {
-                            if (!"item".equals(child.getName()) || !Namespace.DISCO_ITEMS.equals(child.getNamespace())) continue;
-                            commandAdapter.add(child);
-                        }
-                    });
-                } else {
-                    binding.tabLayout.setVisibility(View.GONE);
-                    binding.conversationViewPager.setCurrentItem(0);
-                }
+        if (commandAdapter == null) {
+            conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout);
+            commandAdapter = new CommandAdapter((XmppActivity) getActivity());
+            binding.commandsView.setAdapter(commandAdapter);
+            binding.commandsView.setOnItemClickListener((parent, view, position, id) -> {
+                conversation.startCommand(commandAdapter.getItem(position), activity.xmppConnectionService);
             });
+            Jid commandJid = conversation.getContact().resourceWhichSupport(Namespace.COMMANDS);
+            if (commandJid != null) {
+                binding.tabLayout.setVisibility(View.VISIBLE);
+                activity.xmppConnectionService.fetchCommands(conversation.getAccount(), commandJid, (a, iq) -> {
+                    if (iq.getType() == IqPacket.TYPE.RESULT) {
+                        activity.runOnUiThread(() -> {
+                            for (Element child : iq.query().getChildren()) {
+                                if (!"item".equals(child.getName()) || !Namespace.DISCO_ITEMS.equals(child.getNamespace())) continue;
+                                commandAdapter.add(child);
+                            }
+                        });
+                    } else {
+                        binding.tabLayout.setVisibility(View.GONE);
+                        binding.conversationViewPager.setCurrentItem(0);
+                    }
+                });
+            }
         }
 
         return true;