@@ -19,8 +19,10 @@ import androidx.compose.foundation.verticalScroll
1919import androidx.compose.material3.LinearProgressIndicator
2020import androidx.compose.material3.Text
2121import androidx.compose.runtime.Composable
22+ import androidx.compose.runtime.LaunchedEffect
2223import androidx.compose.runtime.collectAsState
2324import androidx.compose.runtime.getValue
25+ import androidx.compose.runtime.mutableLongStateOf
2426import androidx.compose.runtime.mutableStateOf
2527import androidx.compose.runtime.remember
2628import androidx.compose.runtime.setValue
@@ -41,6 +43,8 @@ import it.fast4x.riplay.ui.styling.bold
4143import it.fast4x.riplay.utils.colorPalette
4244import it.fast4x.riplay.utils.typography
4345import kotlinx.coroutines.Dispatchers
46+ import kotlinx.coroutines.flow.first
47+ import kotlinx.coroutines.flow.flowOn
4448import timber.log.Timber
4549import java.util.Calendar
4650
@@ -50,15 +54,16 @@ fun monthlyListenerLevel(
5054 m : Int = Calendar .getInstance().get(Calendar .MONTH )
5155): Triple <MonthlyListenerLevel , MonthlyListenerLevel , Float > {
5256
53- val minutes = remember {
54- Database .minutesListenedByYearMonth(y, m+ 1 )
55- }.collectAsState(initial = 0 , context = Dispatchers .IO )
57+ var minutes by remember { mutableLongStateOf(0L ) }
58+ LaunchedEffect (Unit ) {
59+ minutes = Database .minutesListenedByYearMonth(y, m+ 1 ).first()
60+ }
5661
57- val level = MonthlyListenerLevel .getLevelByMinutes(minutes.value. toInt())
62+ val level = MonthlyListenerLevel .getLevelByMinutes(minutes.toInt())
5863 val nextLevel = MonthlyListenerLevel .getNextLevel(level)
5964
60- val progress = minutes.value. toFloat() / MonthlyListenerLevel .getRangeLevel(level).second.toFloat()
61- Timber .d(" monthlyListenerLevel year $y month $m minutes ${minutes.value } level ${level.name} nextLevel ${nextLevel.name} progress $progress rangeLevel = ${MonthlyListenerLevel .getRangeLevel(level)} " )
65+ val progress = minutes.toFloat() / MonthlyListenerLevel .getRangeLevel(level).second.toFloat()
66+ Timber .d(" monthlyListenerLevel year $y month $m minutes ${minutes} level ${level.name} nextLevel ${nextLevel.name} progress $progress rangeLevel = ${MonthlyListenerLevel .getRangeLevel(level)} " )
6267
6368 return Triple (
6469 level,
@@ -73,16 +78,18 @@ fun annualListenerLevel(
7378 y : Int = Calendar .getInstance().get(Calendar .YEAR )
7479): Triple <AnnualListenerLevel , AnnualListenerLevel , Float > {
7580
76- val minutes = remember {
77- Database .minutesListenedByYear(y)
78- }.collectAsState(initial = 0 , context = Dispatchers .IO )
81+ var minutes by remember { mutableLongStateOf(0L ) }
82+ LaunchedEffect (Unit ) {
83+ minutes = Database .minutesListenedByYear(y).first()
84+ }
85+
7986
80- Timber .d(" annuallyListenerLevel minutes ${minutes.value } " )
81- val level = AnnualListenerLevel .getLevelByMinutes(minutes.value. toInt())
87+ Timber .d(" annuallyListenerLevel minutes ${minutes} " )
88+ val level = AnnualListenerLevel .getLevelByMinutes(minutes.toInt())
8289 val nextLevel = AnnualListenerLevel .getNextLevel(level)
8390
84- val progress = minutes.value. toFloat() / AnnualListenerLevel .getRangeLevel(level).second.toFloat()
85- Timber .d(" annualListenerLevel year $y minutes ${minutes.value } level ${level.name} nextLevel ${nextLevel.name} progress $progress rangeLevel = ${AnnualListenerLevel .getRangeLevel(level)} " )
91+ val progress = minutes.toFloat() / AnnualListenerLevel .getRangeLevel(level).second.toFloat()
92+ Timber .d(" annualListenerLevel year $y minutes ${minutes} level ${level.name} nextLevel ${nextLevel.name} progress $progress rangeLevel = ${AnnualListenerLevel .getRangeLevel(level)} " )
8693
8794 return Triple (
8895 level,
0 commit comments