@@ -3,6 +3,7 @@ package com.feelsoftware.feelfine.data.usecase
33import com.feelsoftware.feelfine.data.model.Mood
44import com.feelsoftware.feelfine.data.model.Optional
55import com.feelsoftware.feelfine.data.repository.MoodRepository
6+ import com.feelsoftware.feelfine.data.repository.UserRepository
67import io.reactivex.rxjava3.core.Completable
78import io.reactivex.rxjava3.core.Observable
89import io.reactivex.rxjava3.core.Single
@@ -18,10 +19,25 @@ class SetMoodUseCase(
1819}
1920
2021class GetMoodByDateUseCase (
21- private val repository : MoodRepository
22+ private val repository : MoodRepository ,
23+ private val userRepository : UserRepository ,
2224) {
2325
2426 operator fun invoke (date : Date ): Single <Optional <Mood >> =
27+ userRepository.getProfileLegacy()
28+ .firstOrError()
29+ .flatMap { profile ->
30+ if (profile.isDemo) {
31+ getMockMood()
32+ } else {
33+ getMood(date)
34+ }
35+ }
36+
37+ private fun getMockMood (): Single <Optional <Mood >> =
38+ Single .just(Optional .of(Mood .values().random()))
39+
40+ private fun getMood (date : Date ): Single <Optional <Mood >> =
2541 repository.getMoodByDay(date)
2642 .firstOrError()
2743 .map { list ->
@@ -58,14 +74,14 @@ class GetPercentMoodUseCase(
5874 val currentData = getMoodByDateUseCase(currentDate)
5975 val yesterdayData = getMoodByDateUseCase(yesterdayDate)
6076
61- return Single .zip(currentData, yesterdayData, { current, yesterday ->
77+ return Single .zip(currentData, yesterdayData) { current, yesterday ->
6278 if (current.isPresent.not () || yesterday.isPresent.not ()) {
6379 return @zip Optional .empty<Int >()
6480 }
6581
6682 Optional .of(
6783 (current.value.intensity * 100f / yesterday.value.intensity.coerceAtLeast(1 )).roundToInt() - 100
6884 )
69- }) .toObservable()
85+ }.toObservable()
7086 }
7187}
0 commit comments