Fix and cleanup SmartSearch
This commit is contained in:
parent
04451ab14e
commit
d7f5ded41a
@ -11,9 +11,7 @@ import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
|||||||
import eu.kanade.tachiyomi.ui.browse.source.SourceController
|
import eu.kanade.tachiyomi.ui.browse.source.SourceController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
||||||
import eu.kanade.tachiyomi.ui.manga.MangaController
|
import eu.kanade.tachiyomi.ui.manga.MangaController
|
||||||
import eu.kanade.tachiyomi.util.lang.withUIContext
|
|
||||||
import eu.kanade.tachiyomi.util.system.toast
|
import eu.kanade.tachiyomi.util.system.toast
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.plus
|
import kotlinx.coroutines.plus
|
||||||
@ -36,8 +34,6 @@ class SmartSearchController(bundle: Bundle? = null) : NucleusController<EhSmartS
|
|||||||
override fun onViewCreated(view: View) {
|
override fun onViewCreated(view: View) {
|
||||||
super.onViewCreated(view)
|
super.onViewCreated(view)
|
||||||
|
|
||||||
binding.appbar.bringToFront()
|
|
||||||
|
|
||||||
if (source == null || smartSearchConfig == null) {
|
if (source == null || smartSearchConfig == null) {
|
||||||
router.popCurrentController()
|
router.popCurrentController()
|
||||||
applicationContext?.toast("Missing data!")
|
applicationContext?.toast("Missing data!")
|
||||||
@ -48,25 +44,22 @@ class SmartSearchController(bundle: Bundle? = null) : NucleusController<EhSmartS
|
|||||||
.onEach { results ->
|
.onEach { results ->
|
||||||
if (results is SmartSearchPresenter.SearchResults.Found) {
|
if (results is SmartSearchPresenter.SearchResults.Found) {
|
||||||
val transaction = MangaController(results.manga, true, smartSearchConfig).withFadeTransaction()
|
val transaction = MangaController(results.manga, true, smartSearchConfig).withFadeTransaction()
|
||||||
withUIContext {
|
router.replaceTopController(transaction)
|
||||||
router.replaceTopController(transaction)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
withUIContext {
|
if (results is SmartSearchPresenter.SearchResults.NotFound) {
|
||||||
if (results is SmartSearchPresenter.SearchResults.NotFound) {
|
applicationContext?.toast("Couldn't find the manga in the source!")
|
||||||
applicationContext?.toast("Couldn't find the manga in the source!")
|
} else {
|
||||||
} else {
|
applicationContext?.toast("Error performing automatic search!")
|
||||||
applicationContext?.toast("Error performing automatic search!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val transaction = BrowseSourceController(source, smartSearchConfig.origTitle, smartSearchConfig).withFadeTransaction()
|
|
||||||
withUIContext {
|
|
||||||
router.replaceTopController(transaction)
|
|
||||||
}
|
}
|
||||||
|
val transaction = BrowseSourceController(
|
||||||
|
source,
|
||||||
|
smartSearchConfig.origTitle,
|
||||||
|
smartSearchConfig
|
||||||
|
).withFadeTransaction()
|
||||||
|
router.replaceTopController(transaction)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.launchIn(viewScope + Dispatchers.IO)
|
.launchIn(viewScope)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@ -4,24 +4,25 @@ import android.os.Bundle
|
|||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.source.CatalogueSource
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourceController
|
import eu.kanade.tachiyomi.ui.browse.source.SourceController
|
||||||
|
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||||
import exh.smartsearch.SmartSearchEngine
|
import exh.smartsearch.SmartSearchEngine
|
||||||
import exh.ui.base.CoroutinePresenter
|
import exh.ui.base.CoroutinePresenter
|
||||||
import kotlinx.coroutines.CancellationException
|
import kotlinx.coroutines.CancellationException
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.flow.asSharedFlow
|
||||||
|
|
||||||
class SmartSearchPresenter(private val source: CatalogueSource, private val config: SourceController.SmartSearchConfig) :
|
class SmartSearchPresenter(private val source: CatalogueSource, private val config: SourceController.SmartSearchConfig) :
|
||||||
CoroutinePresenter<SmartSearchController>() {
|
CoroutinePresenter<SmartSearchController>() {
|
||||||
|
|
||||||
val smartSearchFlow = MutableSharedFlow<SearchResults>()
|
private val _smartSearchFlow = MutableSharedFlow<SearchResults>()
|
||||||
|
val smartSearchFlow = _smartSearchFlow.asSharedFlow()
|
||||||
|
|
||||||
private val smartSearchEngine = SmartSearchEngine()
|
private val smartSearchEngine = SmartSearchEngine()
|
||||||
|
|
||||||
override fun onCreate(savedState: Bundle?) {
|
override fun onCreate(savedState: Bundle?) {
|
||||||
super.onCreate(savedState)
|
super.onCreate(savedState)
|
||||||
|
|
||||||
launch(Dispatchers.IO) {
|
launchIO {
|
||||||
val result = try {
|
val result = try {
|
||||||
val resultManga = smartSearchEngine.smartSearch(source, config.origTitle)
|
val resultManga = smartSearchEngine.smartSearch(source, config.origTitle)
|
||||||
if (resultManga != null) {
|
if (resultManga != null) {
|
||||||
@ -38,7 +39,7 @@ class SmartSearchPresenter(private val source: CatalogueSource, private val conf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
smartSearchFlow.emit(result)
|
_smartSearchFlow.emit(result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,54 +1,27 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
<LinearLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="?attr/colorSurface"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/intercept_status"
|
||||||
android:layout_height="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:orientation="vertical">
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:text="@string/searching_source"
|
||||||
|
android:textAppearance="?attr/textAppearanceTitleLarge" />
|
||||||
|
|
||||||
<com.google.android.material.appbar.AppBarLayout
|
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||||
android:id="@+id/appbar"
|
android:id="@+id/intercept_progress"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:elevation="0dp">
|
android:layout_gravity="center"
|
||||||
|
android:indeterminate="true"
|
||||||
<androidx.appcompat.widget.Toolbar
|
app:indicatorSize="56dp" />
|
||||||
android:id="@+id/toolbar"
|
</LinearLayout>
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="?attr/actionBarSize"
|
|
||||||
android:background="?attr/colorPrimary"
|
|
||||||
android:theme="?attr/actionBarTheme" />
|
|
||||||
|
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:background="?attr/colorPrimary"
|
|
||||||
android:gravity="center"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/intercept_status"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="8dp"
|
|
||||||
android:text="@string/searching_source"
|
|
||||||
android:textAppearance="?attr/textAppearanceTitleLarge" />
|
|
||||||
|
|
||||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
|
||||||
android:id="@+id/intercept_progress"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:indeterminate="true"
|
|
||||||
app:indicatorSize="56dp" />
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user