Copy page1/page2 from old conversation on reInit if needed

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/entities/Conversation.java   | 13 
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java |  7 
2 files changed, 13 insertions(+), 7 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/Conversation.java 🔗

@@ -1321,8 +1321,8 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
         return pagerAdapter.switchToSession(node);
     }
 
-    public void setupViewPager(ViewPager pager, TabLayout tabs, boolean onboarding) {
-        pagerAdapter.setupViewPager(pager, tabs, onboarding);
+    public void setupViewPager(ViewPager pager, TabLayout tabs, boolean onboarding, Conversation oldConversation) {
+        pagerAdapter.setupViewPager(pager, tabs, onboarding, oldConversation);
     }
 
     public void showViewPager() {
@@ -1363,16 +1363,23 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
         protected View page2 = null;
         protected boolean mOnboarding = false;
 
-        public void setupViewPager(ViewPager pager, TabLayout tabs, boolean onboarding) {
+        public void setupViewPager(ViewPager pager, TabLayout tabs, boolean onboarding, Conversation oldConversation) {
             mPager = pager;
             mTabs = tabs;
             mOnboarding = onboarding;
 
+            if (oldConversation != null) {
+                oldConversation.pagerAdapter.mPager = null;
+                oldConversation.pagerAdapter.mTabs = null;
+            }
+
             if (mPager == null) return;
             if (sessions != null) show();
 
             if (pager.getChildAt(0) != null) page1 = pager.getChildAt(0);
             if (pager.getChildAt(1) != null) page2 = pager.getChildAt(1);
+            if (page1 == null) page1 = oldConversation.pagerAdapter.page1;
+            if (page2 == null) page2 = oldConversation.pagerAdapter.page2;
             if (page1 == null || page2 == null) {
                 throw new IllegalStateException("page1 or page2 were not present as child or in model?");
             }

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

@@ -1368,7 +1368,7 @@ public class ConversationFragment extends XmppFragment
         messageListAdapter.setOnContactPictureClicked(null);
         messageListAdapter.setOnContactPictureLongClicked(null);
         messageListAdapter.setOnInlineImageLongClicked(null);
-        if (conversation != null) conversation.setupViewPager(null, null, false);
+        if (conversation != null) conversation.setupViewPager(null, null, false, null);
     }
 
     private void quoteText(String text) {
@@ -2855,12 +2855,11 @@ public class ConversationFragment extends XmppFragment
                 .setOpenConversation(this.conversation);
 
         if (commandAdapter != null && conversation != originalConversation) {
-            originalConversation.setupViewPager(null, null, false);
-            conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout, activity.xmppConnectionService.isOnboarding());
+            conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout, activity.xmppConnectionService.isOnboarding(), originalConversation);
             refreshCommands(false);
         }
         if (commandAdapter == null && conversation != null) {
-            conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout, activity.xmppConnectionService.isOnboarding());
+            conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout, activity.xmppConnectionService.isOnboarding(), null);
             commandAdapter = new CommandAdapter((XmppActivity) getActivity());
             binding.commandsView.setAdapter(commandAdapter);
             binding.commandsView.setOnItemClickListener((parent, view, position, id) -> {