ADD: last mood on app opening

This commit is contained in:
webfussel 2025-08-02 07:46:03 +02:00
parent 7ad753df68
commit 4b30d4f446
4 changed files with 38 additions and 2 deletions

View file

@ -22,6 +22,13 @@ val LocalMoodState = compositionLocalOf<MoodWithInfo> { error("No MoodState prov
@Composable @Composable
fun SoulEchoApp(moodViewModel: MoodViewModel) { fun SoulEchoApp(moodViewModel: MoodViewModel) {
var currentMood by remember { mutableStateOf(MoodWithInfo(mood = PossibleMood.HAPPY, info = "")) } var currentMood by remember { mutableStateOf(MoodWithInfo(mood = PossibleMood.HAPPY, info = "")) }
LaunchedEffect(Unit) {
val lastMood = moodViewModel.getLastMood()
if (lastMood != null) {
currentMood = lastMood
}
}
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
CompositionLocalProvider(LocalMoodState provides currentMood) { CompositionLocalProvider(LocalMoodState provides currentMood) {

View file

@ -23,6 +23,9 @@ interface MoodDao {
@Query("SELECT * FROM moods WHERE DATE(timestamp) = DATE('now', 'localtime') ORDER BY timestamp DESC") @Query("SELECT * FROM moods WHERE DATE(timestamp) = DATE('now', 'localtime') ORDER BY timestamp DESC")
fun getTodaysMoods(): Flow<List<MoodEntity>> fun getTodaysMoods(): Flow<List<MoodEntity>>
@Query("SELECT * FROM moods ORDER BY timestamp DESC LIMIT 1")
suspend fun getLastMood(): MoodEntity?
@Update @Update
suspend fun updateMood(mood: MoodEntity) suspend fun updateMood(mood: MoodEntity)

View file

@ -16,6 +16,10 @@ class MoodRepository(private val moodDao: MoodDao) {
return moodDao.insertMood(moodEntity) return moodDao.insertMood(moodEntity)
} }
suspend fun getLastMood(): MoodWithInfo? {
return moodDao.getLastMood()?.toMoodWithInfo()
}
fun getAllMoods(): Flow<List<MoodEntity>> { fun getAllMoods(): Flow<List<MoodEntity>> {
return moodDao.getAllMoods() return moodDao.getAllMoods()
} }
@ -44,7 +48,6 @@ class MoodRepository(private val moodDao: MoodDao) {
moodDao.deleteAllMoods() moodDao.deleteAllMoods()
} }
// Hilfsmethode um MoodEntity zu MoodWithInfo zu konvertieren
fun MoodEntity.toMoodWithInfo(): MoodWithInfo { fun MoodEntity.toMoodWithInfo(): MoodWithInfo {
return MoodWithInfo(mood = this.mood, info = this.info) return MoodWithInfo(mood = this.mood, info = this.info)
} }

View file

@ -8,6 +8,9 @@ import de.webfussel.soulecho.data.repository.MoodRepository
import de.webfussel.soulecho.mood.MoodWithInfo import de.webfussel.soulecho.mood.MoodWithInfo
import de.webfussel.soulecho.mood.PossibleMood import de.webfussel.soulecho.mood.PossibleMood
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class MoodViewModel(private val repository: MoodRepository) : ViewModel() { class MoodViewModel(private val repository: MoodRepository) : ViewModel() {
@ -15,8 +18,28 @@ class MoodViewModel(private val repository: MoodRepository) : ViewModel() {
val allMoods: Flow<List<MoodEntity>> = repository.getAllMoods() val allMoods: Flow<List<MoodEntity>> = repository.getAllMoods()
val todaysMoods: Flow<List<MoodEntity>> = repository.getTodaysMoods() val todaysMoods: Flow<List<MoodEntity>> = repository.getTodaysMoods()
private val _currentMood = MutableStateFlow<MoodWithInfo?>(null)
val currentMood: StateFlow<MoodWithInfo?> = _currentMood.asStateFlow()
init {
loadLastMood()
}
private fun loadLastMood() {
viewModelScope.launch {
val lastMood = repository.getLastMood()
_currentMood.value = lastMood
}
}
suspend fun saveMood(moodWithInfo: MoodWithInfo): Long { suspend fun saveMood(moodWithInfo: MoodWithInfo): Long {
return repository.saveMood(moodWithInfo) val result = repository.saveMood(moodWithInfo)
_currentMood.value = moodWithInfo
return result
}
suspend fun getLastMood(): MoodWithInfo? {
return repository.getLastMood()
} }
fun getMoodsByType(mood: PossibleMood): Flow<List<MoodEntity>> { fun getMoodsByType(mood: PossibleMood): Flow<List<MoodEntity>> {