Tweak behavior on Browse screen (#8121)
* Tweak behavior on Browse screen - Fix system back popping controller - Add behavior to system back to cancel search toolbar before clearing current search or popping controller * Review changes (cherry picked from commit 6ac17363ed68487b2262308ee9d671ad301f2754) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt
This commit is contained in:
parent
1ecd55736c
commit
dbeb6c721a
@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.base.controller
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.activity.OnBackPressedDispatcherOwner
|
||||
import androidx.compose.runtime.Composable
|
||||
import eu.kanade.tachiyomi.databinding.ComposeControllerBinding
|
||||
import eu.kanade.tachiyomi.util.view.setComposeContent
|
||||
@ -24,6 +25,16 @@ abstract class FullComposeController<P : Presenter<*>>(bundle: Bundle? = null) :
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun handleBack(): Boolean {
|
||||
val dispatcher = (activity as? OnBackPressedDispatcherOwner)?.onBackPressedDispatcher ?: return false
|
||||
return if (dispatcher.hasEnabledCallbacks()) {
|
||||
dispatcher.onBackPressed()
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,6 +1,7 @@
|
||||
package eu.kanade.tachiyomi.ui.browse.source.browse
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
@ -120,13 +121,7 @@ open class BrowseSourceController(bundle: Bundle) :
|
||||
|
||||
BrowseSourceScreen(
|
||||
presenter = presenter,
|
||||
navigateUp = {
|
||||
if (presenter.isUserQuery) {
|
||||
presenter.search()
|
||||
} else {
|
||||
router.popCurrentController()
|
||||
}
|
||||
},
|
||||
navigateUp = ::navigateUp,
|
||||
openFilterSheet = { filterSheet?.show() },
|
||||
onMangaClick = { router.pushController(MangaController(it.id, true)) },
|
||||
onMangaLongClick = { manga ->
|
||||
@ -187,11 +182,21 @@ open class BrowseSourceController(bundle: Bundle) :
|
||||
null -> {}
|
||||
}
|
||||
|
||||
BackHandler(onBack = ::navigateUp)
|
||||
|
||||
LaunchedEffect(presenter.filters) {
|
||||
initFilterSheet()
|
||||
}
|
||||
}
|
||||
|
||||
private fun navigateUp() {
|
||||
when {
|
||||
presenter.searchQuery != null -> presenter.searchQuery = null
|
||||
presenter.isUserQuery -> presenter.search()
|
||||
else -> router.popCurrentController()
|
||||
}
|
||||
}
|
||||
|
||||
fun setSavedSearches(savedSearches: List<EXHSavedSearch>) {
|
||||
filterSheet?.setSavedSearches(savedSearches)
|
||||
}
|
||||
@ -291,8 +296,7 @@ open class BrowseSourceController(bundle: Bundle) :
|
||||
* @param newQuery the new query.
|
||||
*/
|
||||
fun searchWithQuery(newQuery: String) {
|
||||
presenter.searchQuery = newQuery
|
||||
presenter.search()
|
||||
presenter.search(newQuery)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.browse.source.feed
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.core.os.bundleOf
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
@ -178,6 +179,10 @@ open class SourceFeedController :
|
||||
onClickManga = ::onMangaClick,
|
||||
onClickSearch = ::onSearchClick,
|
||||
)
|
||||
|
||||
BackHandler(presenter.searchQuery != null) {
|
||||
presenter.searchQuery = null
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -210,16 +215,6 @@ open class SourceFeedController :
|
||||
onBrowseClick(presenter.searchQuery?.nullIfBlank())
|
||||
}
|
||||
|
||||
override fun handleBack(): Boolean {
|
||||
return when {
|
||||
presenter.searchQuery != null -> {
|
||||
presenter.searchQuery = null
|
||||
true
|
||||
}
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
private fun onRemoveClick(feedSavedSearch: FeedSavedSearch) {
|
||||
MaterialAlertDialogBuilder(activity!!)
|
||||
.setTitle(R.string.feed)
|
||||
|
@ -5,7 +5,6 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.activity.OnBackPressedDispatcherOwner
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.SnackbarResult
|
||||
@ -254,17 +253,6 @@ class MangaController : FullComposeController<MangaPresenter> {
|
||||
}
|
||||
}
|
||||
|
||||
// Let Compose view handle this
|
||||
override fun handleBack(): Boolean {
|
||||
val dispatcher = (activity as? OnBackPressedDispatcherOwner)?.onBackPressedDispatcher ?: return false
|
||||
return if (dispatcher.hasEnabledCallbacks()) {
|
||||
dispatcher.onBackPressed()
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup, savedViewState: Bundle?): View {
|
||||
settingsSheet = ChaptersSettingsSheet(router, presenter)
|
||||
trackSheet = TrackSheet(this, (activity as MainActivity).supportFragmentManager)
|
||||
|
@ -1,6 +1,5 @@
|
||||
package eu.kanade.tachiyomi.ui.recent.updates
|
||||
|
||||
import androidx.activity.OnBackPressedDispatcherOwner
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import eu.kanade.presentation.updates.UpdateScreen
|
||||
@ -36,15 +35,4 @@ class UpdatesController :
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Let Compose view handle this
|
||||
override fun handleBack(): Boolean {
|
||||
val dispatcher = (activity as? OnBackPressedDispatcherOwner)?.onBackPressedDispatcher ?: return false
|
||||
return if (dispatcher.hasEnabledCallbacks()) {
|
||||
dispatcher.onBackPressed()
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user