From 29a882eebb6c56d15ba8f8b1b75b23f917d50a48 Mon Sep 17 00:00:00 2001
From: Andreas <andreas.everos@gmail.com>
Date: Mon, 29 Mar 2021 22:54:20 +0200
Subject: [PATCH] Remove insert page when dual page split get turned off
 (#4739)

(cherry picked from commit bdbdf211e23fa9a70f9513c4a699544f46fc03c1)
---
 .../tachiyomi/ui/reader/viewer/pager/PagerConfig.kt    | 10 +++++++++-
 .../tachiyomi/ui/reader/viewer/pager/PagerViewer.kt    | 10 ++++++++++
 .../ui/reader/viewer/pager/PagerViewerAdapter.kt       |  6 ++++++
 3 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt
index d7b52dc16..fcf07c66f 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt
@@ -20,6 +20,8 @@ class PagerConfig(
     preferences: PreferencesHelper = Injekt.get()
 ) : ViewerConfig(preferences, scope) {
 
+    var dualPageSplitChangedListener: ((Boolean) -> Unit)? = null
+
     var imageScaleType = 1
         private set
 
@@ -56,7 +58,13 @@ class PagerConfig(
             )
 
         preferences.dualPageSplitPaged()
-            .register({ dualPageSplit = it }, { imagePropertyChangedListener?.invoke() })
+            .register(
+                { dualPageSplit = it },
+                {
+                    imagePropertyChangedListener?.invoke()
+                    dualPageSplitChangedListener?.invoke(it)
+                }
+            )
 
         preferences.dualPageInvertPaged()
             .register({ dualPageInvert = it }, { imagePropertyChangedListener?.invoke() })
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt
index 732f223c0..2084d68da 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt
@@ -116,6 +116,12 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
             false
         }
 
+        config.dualPageSplitChangedListener = { enabled ->
+            if (!enabled) {
+                cleanupPageSplit()
+            }
+        }
+
         config.imagePropertyChangedListener = {
             refreshAdapter()
         }
@@ -381,4 +387,8 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
     fun onPageSplit(currentPage: ReaderPage, newPage: InsertPage) {
         adapter.onPageSplit(currentPage, newPage, this::class.java)
     }
+
+    private fun cleanupPageSplit() {
+        adapter.cleanupPageSplit()
+    }
 }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt
index d15d744f3..59a35e5c0 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt
@@ -151,4 +151,10 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() {
 
         notifyDataSetChanged()
     }
+
+    fun cleanupPageSplit() {
+        val insertPages = items.filterIsInstance(InsertPage::class.java)
+        items.removeAll(insertPages)
+        notifyDataSetChanged()
+    }
 }