Просмотр исходного кода

Open migrated/copied MangaController right away (#5005)

Ivan Iskandar 3 лет назад
Родитель
Сommit
818468c58f

+ 9 - 5
app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt

@@ -6,6 +6,7 @@ import androidx.core.view.isVisible
 import com.afollestad.materialdialogs.MaterialDialog
 import com.afollestad.materialdialogs.list.listItemsMultiChoice
 import com.bluelinelabs.conductor.Controller
+import com.bluelinelabs.conductor.RouterTransaction
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.database.models.Manga
 import eu.kanade.tachiyomi.data.preference.PreferencesHelper
@@ -15,6 +16,7 @@ import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
 import eu.kanade.tachiyomi.ui.browse.migration.MigrationFlags
 import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchController
 import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchPresenter
+import eu.kanade.tachiyomi.ui.manga.MangaController
 import uy.kohesive.injekt.injectLazy
 
 class SearchController(
@@ -69,12 +71,14 @@ class SearchController(
         super.onMangaClick(manga)
     }
 
-    fun renderIsReplacingManga(isReplacingManga: Boolean) {
-        if (isReplacingManga) {
-            binding.progress.isVisible = true
-        } else {
-            binding.progress.isVisible = false
+    fun renderIsReplacingManga(isReplacingManga: Boolean, newManga: Manga?) {
+        binding.progress.isVisible = isReplacingManga
+        if (!isReplacingManga) {
             router.popController(this)
+            if (newManga != null) {
+                // Replaces old MangaController
+                router.replaceTopController(RouterTransaction.with(MangaController(newManga)))
+            }
         }
     }
 

+ 8 - 4
app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt

@@ -26,12 +26,16 @@ class SearchPresenter(
     private val manga: Manga
 ) : GlobalSearchPresenter(initialQuery) {
 
-    private val replacingMangaRelay = BehaviorRelay.create<Boolean>()
+    private val replacingMangaRelay = BehaviorRelay.create<Pair<Boolean, Manga?>>()
 
     override fun onCreate(savedState: Bundle?) {
         super.onCreate(savedState)
 
-        replacingMangaRelay.subscribeLatestCache({ controller, isReplacingManga -> (controller as? SearchController)?.renderIsReplacingManga(isReplacingManga) })
+        replacingMangaRelay.subscribeLatestCache(
+            { controller, (isReplacingManga, newManga) ->
+                (controller as? SearchController)?.renderIsReplacingManga(isReplacingManga, newManga)
+            }
+        )
     }
 
     override fun getEnabledSources(): List<CatalogueSource> {
@@ -55,7 +59,7 @@ class SearchPresenter(
     fun migrateManga(prevManga: Manga, manga: Manga, replace: Boolean) {
         val source = sourceManager.get(manga.source) ?: return
 
-        replacingMangaRelay.call(true)
+        replacingMangaRelay.call(Pair(true, null))
 
         presenterScope.launchIO {
             try {
@@ -67,7 +71,7 @@ class SearchPresenter(
                 withUIContext { view?.applicationContext?.toast(e.message) }
             }
 
-            presenterScope.launchUI { replacingMangaRelay.call(false) }
+            presenterScope.launchUI { replacingMangaRelay.call(Pair(false, manga)) }
         }
     }