Skip to content

Commit 53d0caa

Browse files
Use collectAsStateWithLifecycle directly in commonMain where possible
1 parent c605344 commit 53d0caa

File tree

7 files changed

+44
-122
lines changed

7 files changed

+44
-122
lines changed

shared/build.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ kotlin {
105105
implementation(libs.voyager.navigator)
106106
implementation(libs.voyager.transitions)
107107

108+
// lifecycle
109+
implementation(libs.androidx.lifecycle.runtime.compose)
110+
108111
// ViewModel
109112
implementation(libs.voyager.screenmodel)
110113

@@ -144,8 +147,6 @@ kotlin {
144147
implementation(libs.sqldelight.android)
145148
// Unbundled sqlite
146149
implementation(libs.sqlite.android)
147-
// lifecycle
148-
implementation(libs.androidx.lifecycle.runtime.compose)
149150
// Coil
150151
implementation(libs.coil)
151152
implementation(libs.androidx.core.ktx)

shared/src/androidMain/kotlin/com/mr3y/ludi/shared/ui/screens/onboarding/OnboardingScreen.android.kt

Lines changed: 0 additions & 31 deletions
This file was deleted.

shared/src/androidMain/kotlin/com/mr3y/ludi/shared/ui/screens/settings/EditPreferencesScreen.android.kt

Lines changed: 0 additions & 26 deletions
This file was deleted.

shared/src/commonMain/kotlin/com/mr3y/ludi/shared/ui/screens/onboarding/OnboardingScreen.kt

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import androidx.compose.animation.slideInVertically
1313
import androidx.compose.animation.slideOutHorizontally
1414
import androidx.compose.animation.slideOutVertically
1515
import androidx.compose.animation.togetherWith
16-
import androidx.compose.foundation.ExperimentalFoundationApi
1716
import androidx.compose.foundation.background
1817
import androidx.compose.foundation.layout.Arrangement
1918
import androidx.compose.foundation.layout.Box
@@ -35,7 +34,6 @@ import androidx.compose.foundation.verticalScroll
3534
import androidx.compose.material.ExperimentalMaterialApi
3635
import androidx.compose.material.icons.Icons
3736
import androidx.compose.material.icons.automirrored.filled.ArrowForward
38-
import androidx.compose.material.icons.filled.ArrowForward
3937
import androidx.compose.material.pullrefresh.PullRefreshIndicator
4038
import androidx.compose.material.pullrefresh.pullRefresh
4139
import androidx.compose.material.pullrefresh.rememberPullRefreshState
@@ -65,6 +63,7 @@ import androidx.compose.ui.semantics.clearAndSetSemantics
6563
import androidx.compose.ui.semantics.stateDescription
6664
import androidx.compose.ui.unit.Dp
6765
import androidx.compose.ui.unit.dp
66+
import androidx.lifecycle.compose.collectAsStateWithLifecycle
6867
import cafe.adriel.lyricist.LocalStrings
6968
import cafe.adriel.voyager.core.screen.Screen
7069
import com.mr3y.ludi.shared.core.model.GameGenre
@@ -86,12 +85,30 @@ object OnboardingScreen : Screen {
8685
}
8786

8887
@Composable
89-
expect fun OnboardingScreen(
88+
fun OnboardingScreen(
9089
modifier: Modifier = Modifier,
9190
viewModel: OnBoardingViewModel
92-
)
91+
) {
92+
val onboardingState by viewModel.onboardingState.collectAsStateWithLifecycle()
93+
OnboardingScreen(
94+
modifier = modifier,
95+
searchQuery = viewModel.searchQuery.value,
96+
onboardingState = onboardingState,
97+
onSkipButtonClicked = viewModel::completeOnboarding,
98+
onFinishButtonClicked = viewModel::completeOnboarding,
99+
onSelectingNewsDataSource = viewModel::followNewsDataSource,
100+
onUnselectNewsDataSource = viewModel::unFollowNewsDataSource,
101+
onUpdatingSearchQueryText = viewModel::updateSearchQuery,
102+
onAddingGameToFavourites = viewModel::addGameToFavourites,
103+
onRemovingGameFromFavourites = viewModel::removeGameFromFavourites,
104+
onRefreshingGames = viewModel::refreshGames,
105+
onSelectingGenre = viewModel::selectGenre,
106+
onUnselectingGenre = viewModel::unselectGenre,
107+
onRefreshingGenres = viewModel::refreshGenres
108+
)
109+
}
93110

94-
@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterialApi::class)
111+
@OptIn(ExperimentalMaterialApi::class)
95112
@Composable
96113
fun OnboardingScreen(
97114
onboardingState: OnboardingState,

shared/src/commonMain/kotlin/com/mr3y/ludi/shared/ui/screens/settings/EditPreferencesScreen.kt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import androidx.compose.material3.Text
2727
import androidx.compose.material3.TopAppBar
2828
import androidx.compose.material3.TopAppBarDefaults
2929
import androidx.compose.runtime.Composable
30+
import androidx.compose.runtime.getValue
3031
import androidx.compose.ui.Alignment
3132
import androidx.compose.ui.Modifier
3233
import androidx.compose.ui.graphics.Color
@@ -42,6 +43,7 @@ import androidx.compose.ui.semantics.stateDescription
4243
import androidx.compose.ui.text.font.FontWeight
4344
import androidx.compose.ui.text.style.TextAlign
4445
import androidx.compose.ui.unit.dp
46+
import androidx.lifecycle.compose.collectAsStateWithLifecycle
4547
import cafe.adriel.lyricist.LocalStrings
4648
import cafe.adriel.voyager.core.annotation.InternalVoyagerApi
4749
import cafe.adriel.voyager.core.lifecycle.LifecycleEffect
@@ -79,7 +81,23 @@ data class EditPreferencesScreen(val type: PreferencesType) : Screen {
7981
}
8082

8183
@Composable
82-
expect fun EditPreferencesScreen(onDoneClick: () -> Unit, modifier: Modifier = Modifier, viewModel: EditPreferencesViewModel)
84+
fun EditPreferencesScreen(
85+
onDoneClick: () -> Unit,
86+
viewModel: EditPreferencesViewModel,
87+
modifier: Modifier = Modifier,
88+
) {
89+
val editPreferencesState by viewModel.editPreferencesState.collectAsStateWithLifecycle()
90+
EditPreferencesScreen(
91+
editPreferencesState,
92+
onDoneClick = onDoneClick,
93+
onFollowingNewsDataSource = viewModel::followNewsDataSource,
94+
onUnfollowingNewsDataSource = viewModel::unFollowNewsDataSource,
95+
onRemovingGameFromFavourites = viewModel::removeGameFromFavourites,
96+
onAddingGenreToFavourites = viewModel::addToSelectedGenres,
97+
onRemovingGenreFromFavourites = viewModel::removeFromSelectedGenres,
98+
modifier = modifier
99+
)
100+
}
83101

84102
@OptIn(ExperimentalMaterial3Api::class)
85103
@Composable

shared/src/desktopMain/kotlin/com/mr3y/ludi/shared/ui/screens/onboarding/OnboardingScreen.desktop.kt

Lines changed: 0 additions & 31 deletions
This file was deleted.

shared/src/desktopMain/kotlin/com/mr3y/ludi/shared/ui/screens/settings/EditPreferencesScreen.desktop.kt

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)