@@ -28,16 +28,16 @@ class StatsRepository(
2828
2929 private fun percentageMax () {
3030 _syncStatus .update { true }
31- var maxSteps = 0
32- playersList.forEach { it ->
33- if (it.weeklySteps > maxSteps) maxSteps = it.weeklySteps
31+ val maxSteps = playersList.maxOfOrNull { it.weeklySteps } ? : 0
32+ playersList.forEach { player ->
33+ player.percentage = if (maxSteps > 0 ) {
34+ player.weeklySteps.toFloat() / maxSteps
35+ } else 0f
3436 }
35- playersList.forEach { it ->
36- it.percentage = it.weeklySteps.toFloat() / maxSteps
37- }
38- playersList.sortByDescending { it.percentage }
37+ // Sort by absolute weekly steps to ensure correct leader ordering
38+ playersList.sortByDescending { it.weeklySteps }
3939 _syncStatus .update { false }
40- Log .d(" dataTransfer" , " StatsRepo sorted list $ " )
40+ Log .d(" dataTransfer" , " StatsRepo sorted list" )
4141 }
4242
4343 suspend fun syncData (login : String , steps : Int , weeklySteps : Int ): PlayersListSyncData {
@@ -83,23 +83,20 @@ class StatsRepository(
8383 var stepsSum = 0
8484 if (playersList.isNotEmpty()) {
8585 playersList.forEach { player ->
86- stepsSum + = player.steps
86+ stepsSum + = player.weeklySteps
8787 }
8888 }
89- Log .e(" dataTransfer" , " summ of steps is $stepsSum " )
89+ Log .e(" dataTransfer" , " sum of weekly steps is $stepsSum " )
9090 return stepsSum * USER_STEP_DEFAULT / 1000
9191 }
9292
9393 private fun calcLeaderDiff (login : String? ): Double {
94- var diff = 0.0
95-
96- if (playersList.isNotEmpty()) {
97- val leader = playersList.first()
98- val player = playersList.first { it.login == login }
99- diff = (leader.weeklySteps - player.weeklySteps) * USER_STEP_DEFAULT / 1000
100- Log .e(" difference" , " $leader \n $player \n $diff " )
101- }
102- return diff
94+ if (playersList.isEmpty() || login.isNullOrBlank()) return 0.0
95+ val leader = playersList.maxByOrNull { it.weeklySteps } ? : return 0.0
96+ val player = playersList.firstOrNull { it.login == login } ? : return 0.0
97+ val diffKm = (leader.weeklySteps - player.weeklySteps) * USER_STEP_DEFAULT / 1000
98+ Log .e(" difference" , " $leader \n $player \n $diffKm " )
99+ return diffKm
103100 }
104101
105102 init {
0 commit comments