e98567a86b
(cherry picked from commit f0eb42e72d)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/Backup.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupManga.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/models/Backup.kt
# app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt
# app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/base/changehandler/OneWayFadeChangeHandler.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/SelectionHeader.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceItem.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHolder.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
# app/src/main/java/eu/kanade/tachiyomi/util/view/ViewExtensions.kt
71 lines
2.8 KiB
Kotlin
71 lines
2.8 KiB
Kotlin
package exh.ui.smartsearch
|
|
|
|
import android.os.Bundle
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import eu.kanade.tachiyomi.R
|
|
import eu.kanade.tachiyomi.databinding.EhSmartSearchBinding
|
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
|
import eu.kanade.tachiyomi.source.SourceManager
|
|
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
|
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
|
import eu.kanade.tachiyomi.ui.browse.source.SourceController
|
|
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
|
import eu.kanade.tachiyomi.ui.manga.MangaController
|
|
import eu.kanade.tachiyomi.util.system.toast
|
|
import kotlinx.coroutines.flow.launchIn
|
|
import kotlinx.coroutines.flow.onEach
|
|
import kotlinx.coroutines.plus
|
|
import uy.kohesive.injekt.injectLazy
|
|
|
|
class SmartSearchController(bundle: Bundle? = null) : NucleusController<EhSmartSearchBinding, SmartSearchPresenter>() {
|
|
private val sourceManager: SourceManager by injectLazy()
|
|
|
|
private val source = sourceManager.get(bundle?.getLong(ARG_SOURCE_ID, -1) ?: -1) as? CatalogueSource
|
|
private val smartSearchConfig: SourceController.SmartSearchConfig? = bundle?.getParcelable(
|
|
ARG_SMART_SEARCH_CONFIG,
|
|
)
|
|
|
|
override fun getTitle() = source?.name.orEmpty()
|
|
|
|
override fun createPresenter() = SmartSearchPresenter(source!!, smartSearchConfig!!)
|
|
|
|
override fun createBinding(inflater: LayoutInflater) = EhSmartSearchBinding.inflate(inflater)
|
|
|
|
override fun onViewCreated(view: View) {
|
|
super.onViewCreated(view)
|
|
|
|
if (source == null || smartSearchConfig == null) {
|
|
router.popCurrentController()
|
|
applicationContext?.toast("Missing data!")
|
|
return
|
|
}
|
|
|
|
presenter.smartSearchFlow
|
|
.onEach { results ->
|
|
if (results is SmartSearchPresenter.SearchResults.Found) {
|
|
val transaction = MangaController(results.manga, true, smartSearchConfig).withFadeTransaction()
|
|
router.replaceTopController(transaction)
|
|
} else {
|
|
if (results is SmartSearchPresenter.SearchResults.NotFound) {
|
|
applicationContext?.toast(R.string.could_not_find_manga)
|
|
} else {
|
|
applicationContext?.toast(R.string.automatic_search_error)
|
|
}
|
|
val transaction = BrowseSourceController(
|
|
source,
|
|
smartSearchConfig.origTitle,
|
|
smartSearchConfig,
|
|
).withFadeTransaction()
|
|
router.replaceTopController(transaction)
|
|
}
|
|
}
|
|
.launchIn(viewScope)
|
|
}
|
|
|
|
companion object {
|
|
const val ARG_SOURCE_ID = "SOURCE_ID"
|
|
const val ARG_SMART_SEARCH_CONFIG = "SMART_SEARCH_CONFIG"
|
|
}
|
|
}
|