Skip to content

Commit

Permalink
dismiss series if page clicked twice (part of #68)
Browse files Browse the repository at this point in the history
  • Loading branch information
DatL4g committed Dec 29, 2023
1 parent f5c96b8 commit 88fab99
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@ private fun CompactScreen(
Pages(
pages = component.pages,
onPageSelected = { index ->
component.selectPage(index)
if (selectedPage != index) {
component.selectPage(index)
}
},
pager = { modifier, state, key, pageContent ->
val scrollEnabled = when (state.currentPage) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import dev.datlag.burningseries.model.Series
import dev.datlag.burningseries.model.Shortcut
import dev.datlag.burningseries.shared.LocalDI
import dev.datlag.burningseries.shared.SharedRes
import dev.datlag.burningseries.shared.ui.navigation.Component
import dev.datlag.burningseries.shared.ui.screen.initial.favorite.FavoriteScreenComponent
import dev.datlag.burningseries.shared.ui.screen.initial.home.HomeScreenComponent
import dev.datlag.burningseries.shared.ui.screen.initial.search.SearchScreenComponent
Expand Down Expand Up @@ -48,7 +47,7 @@ class InitialScreenComponent(
private val pagesNavigation = PagesNavigation<View>()

@OptIn(ExperimentalDecomposeApi::class)
override val pages: Value<ChildPages<*, Component>> = childPages(
override val pages: Value<ChildPages<View, SeriesHolderComponent>> = childPages(
source = pagesNavigation,
serializer = View.serializer(),
initialPages = {
Expand Down Expand Up @@ -85,7 +84,7 @@ class InitialScreenComponent(
private fun createChild(
view: View,
componentContext: ComponentContext
) : Component {
) : SeriesHolderComponent {
return when (view) {
is View.Home -> HomeScreenComponent(
componentContext = componentContext,
Expand Down Expand Up @@ -117,6 +116,10 @@ class InitialScreenComponent(

@OptIn(ExperimentalDecomposeApi::class)
override fun selectPage(index: Int) {
pagesNavigation.select(index = index)
pagesNavigation.select(index = index) { new, old ->
if (new.items[new.selectedIndex] == old.items[old.selectedIndex]) {
pages.value.items[pages.value.selectedIndex].instance?.dismissHoldingSeries()
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package dev.datlag.burningseries.shared.ui.screen.initial

import dev.datlag.burningseries.shared.ui.navigation.Component

interface SeriesHolderComponent : Component {
fun dismissHoldingSeries()
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ import com.arkivanov.decompose.router.slot.ChildSlot
import com.arkivanov.decompose.value.Value
import dev.datlag.burningseries.database.Series
import dev.datlag.burningseries.shared.ui.navigation.Component
import dev.datlag.burningseries.shared.ui.screen.initial.SeriesHolderComponent
import kotlinx.coroutines.flow.StateFlow

interface FavoriteComponent : Component {
interface FavoriteComponent : SeriesHolderComponent {

val favorites: StateFlow<List<Series>>
val searchItems: StateFlow<List<Series>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class FavoriteScreenComponent(
initialHref = config.href,
initialCoverHref = config.coverHref,
onGoBack = {
navigation.dismiss(scrollEnabled)
dismissHoldingSeries()
},
watchVideo = { schemeKey, series, episode, stream ->
watchVideo(schemeKey, series, episode, stream)
Expand Down Expand Up @@ -109,4 +109,8 @@ class FavoriteScreenComponent(
override fun searchQuery(text: String) {
searchQuery.value = text.trim()
}

override fun dismissHoldingSeries() {
navigation.dismiss(scrollEnabled)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ import dev.datlag.burningseries.model.Release
import dev.datlag.burningseries.model.state.HomeState
import dev.datlag.burningseries.shared.ui.navigation.Component
import dev.datlag.burningseries.shared.ui.navigation.DialogComponent
import dev.datlag.burningseries.shared.ui.screen.initial.SeriesHolderComponent
import kotlinx.coroutines.flow.StateFlow

interface HomeComponent : Component {
interface HomeComponent : SeriesHolderComponent {

val child: Value<ChildSlot<*, Component>>
val dialog: Value<ChildSlot<DialogConfig, DialogComponent>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,7 @@ class HomeScreenComponent(
initialHref = config.href,
initialCoverHref = config.coverHref,
onGoBack = {
shortcutIntent = Shortcut.Intent.NONE
navigation.dismiss(scrollEnabled)
dismissHoldingSeries()
},
watchVideo = { schemeKey, series, episode, stream ->
watchVideo(schemeKey, series, episode, stream)
Expand Down Expand Up @@ -127,4 +126,9 @@ class HomeScreenComponent(
override fun showDialog(config: DialogConfig) {
dialogNavigation.activate(config)
}

override fun dismissHoldingSeries() {
shortcutIntent = Shortcut.Intent.NONE
navigation.dismiss(scrollEnabled)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ import com.arkivanov.decompose.value.Value
import dev.datlag.burningseries.model.Genre
import dev.datlag.burningseries.model.state.SearchState
import dev.datlag.burningseries.shared.ui.navigation.Component
import dev.datlag.burningseries.shared.ui.screen.initial.SeriesHolderComponent
import kotlinx.coroutines.flow.StateFlow

interface SearchComponent : Component {
interface SearchComponent : SeriesHolderComponent {

val searchState: StateFlow<SearchState>
val genres: StateFlow<List<Genre>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class SearchScreenComponent(
initialHref = config.href,
initialCoverHref = null,
onGoBack = {
navigation.dismiss(scrollEnabled)
dismissHoldingSeries()
},
watchVideo = { schemeKey, series, episode, stream ->
watchVideo(schemeKey, series, episode, stream)
Expand Down Expand Up @@ -127,4 +127,8 @@ class SearchScreenComponent(
scrollEnabled(false)
}
}

override fun dismissHoldingSeries() {
navigation.dismiss(scrollEnabled)
}
}

0 comments on commit 88fab99

Please sign in to comment.