From a7c92b020b5ba31fcd969241b14c9660ffc1be91 Mon Sep 17 00:00:00 2001 From: Sockenklaus Date: Thu, 17 Nov 2022 10:04:35 +0100 Subject: [PATCH] LiveData to Flow --- .../ui/composables/BatteryDetails.kt | 5 ++-- .../ui/models/BatteryDetailsViewModel.kt | 23 ++++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/sockenklaus/batterytracker/ui/composables/BatteryDetails.kt b/app/src/main/java/com/sockenklaus/batterytracker/ui/composables/BatteryDetails.kt index d33463a..55fc7c4 100644 --- a/app/src/main/java/com/sockenklaus/batterytracker/ui/composables/BatteryDetails.kt +++ b/app/src/main/java/com/sockenklaus/batterytracker/ui/composables/BatteryDetails.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavController +import com.sockenklaus.batterytracker.room.entities.Battery import com.sockenklaus.batterytracker.room.entities.Charge import com.sockenklaus.batterytracker.ui.AppBarTitle import com.sockenklaus.batterytracker.ui.Routes @@ -28,8 +29,8 @@ fun BatteryDetails( batteryId: Int? = null ){ val model: BatteryDetailsViewModel = viewModel() - val battery by model.battery.observeAsState() - val charges: List by model.charges.observeAsState(emptyList()) + val battery by model.battery.collectAsState(Battery(name = "")) + val charges: List by model.charges.collectAsState(emptyList()) Column( modifier = Modifier.padding(bottom = 16.dp) diff --git a/app/src/main/java/com/sockenklaus/batterytracker/ui/models/BatteryDetailsViewModel.kt b/app/src/main/java/com/sockenklaus/batterytracker/ui/models/BatteryDetailsViewModel.kt index 30b8357..36e2dd5 100644 --- a/app/src/main/java/com/sockenklaus/batterytracker/ui/models/BatteryDetailsViewModel.kt +++ b/app/src/main/java/com/sockenklaus/batterytracker/ui/models/BatteryDetailsViewModel.kt @@ -1,14 +1,15 @@ package com.sockenklaus.batterytracker.ui.models import android.app.Application -import androidx.lifecycle.AndroidViewModel -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.SavedStateHandle -import androidx.lifecycle.asLiveData +import androidx.lifecycle.* import com.sockenklaus.batterytracker.room.BatteryTrackerDB import com.sockenklaus.batterytracker.room.entities.Battery import com.sockenklaus.batterytracker.room.entities.Charge +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.launch class BatteryDetailsViewModel( application: Application, @@ -17,15 +18,15 @@ class BatteryDetailsViewModel( private val db = BatteryTrackerDB.getInstance(application) - val battery: LiveData = if(state.get("batteryId") !== null) { - db.batteryDao().getBatteryById(state["batteryId"]!!).asLiveData() + val battery: Flow = if(state.get("batteryId") !== null) { + db.batteryDao().getBatteryById(state["batteryId"]!!) } else { - MutableLiveData() + MutableStateFlow(Battery(name="")) } - val charges: LiveData> = if(state.get("batteryId") !== null){ - db.chargeDao().getChargesByBatteryId(state["batteryId"]!!).asLiveData() + val charges: Flow> = if(state.get("batteryId") !== null){ + db.chargeDao().getChargesByBatteryId(state["batteryId"]!!) } else { - MutableLiveData() + MutableStateFlow(emptyList()) } } \ No newline at end of file