Skip to content

Commit f64dacb

Browse files
authored
Merge pull request #283 from joreilly/lifecycle
circuit presenter lifecycle updates
2 parents 9ae2b66 + 0030b8f commit f64dacb

File tree

3 files changed

+7
-1
lines changed

3 files changed

+7
-1
lines changed

common/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ kotlin {
6565
implementation(compose.components.resources)
6666
implementation(libs.compose.adaptive)
6767
implementation(libs.compose.adaptive.layout)
68+
implementation(libs.lifecyle.runtime)
6869
}
6970

7071
androidMain.dependencies {

common/src/commonMain/kotlin/dev/johnoreilly/common/stationlist/StationListPresenter.kt

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package dev.johnoreilly.common.stationlist
33
import androidx.compose.runtime.Composable
44
import androidx.compose.runtime.collectAsState
55
import androidx.compose.runtime.getValue
6+
import androidx.compose.runtime.remember
7+
import androidx.lifecycle.compose.collectAsStateWithLifecycle
68
import com.slack.circuit.codegen.annotations.CircuitInject
79
import com.slack.circuit.runtime.Navigator
810
import com.slack.circuit.runtime.presenter.Presenter
@@ -21,7 +23,8 @@ class StationListPresenter(
2123
) : Presenter<StationListScreen.State> {
2224
@Composable
2325
override fun present(): StationListScreen.State {
24-
val stationList by cityBikesRepository.pollNetworkUpdates(screen.networkId).collectAsState(emptyList())
26+
val networkFlow = remember { cityBikesRepository.pollNetworkUpdates(screen.networkId) }
27+
val stationList by networkFlow.collectAsStateWithLifecycle(emptyList())
2528
return StationListScreen.State(screen.networkId, stationList) { event ->
2629
when (event) {
2730
StationListScreen.Event.BackClicked -> navigator.pop()

gradle/libs.versions.toml

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ androidxLifecycle = "2.8.7"
99
androidxNavigationCompose = "2.8.9"
1010
androidxRoom = "2.7.0"
1111
circuit = "0.25.0"
12+
composeLifecyleRuntime="2.8.4"
1213
compose-multiplatform = "1.7.3"
1314
composeAdaptiveLayout = "1.0.0"
1415
coroutines = "1.10.1"
@@ -73,6 +74,7 @@ ktor-client-logging = { group = "io.ktor", name = "ktor-client-logging", version
7374
ktor-client-okhttp = { group = "io.ktor", name = "ktor-client-okhttp", version.ref = "ktor" }
7475
ktor-client-serialization = { group = "io.ktor", name = "ktor-client-serialization", version.ref = "ktor" }
7576
ktor-serialization-kotlinx-json = { group = "io.ktor", name = "ktor-serialization-kotlinx-json", version.ref = "ktor" }
77+
lifecyle-runtime = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "composeLifecyleRuntime" }
7678
okhttp-core = { module = "com.squareup.okhttp3:okhttp", version.ref="okhttp" }
7779
slf4j = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4j" }
7880
slf4j-android = { module = "uk.uuid.slf4j:slf4j-android", version.ref = "slf4jAndroid" }

0 commit comments

Comments
 (0)