Skip to content

Commit 502bde9

Browse files
committed
исправление отставания от лидера и обнуления счетчика шагов по понедельникам
1 parent b30a63a commit 502bde9

3 files changed

Lines changed: 24 additions & 21 deletions

File tree

app/build.gradle.kts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ android {
2121
applicationId = "apc.appcradle.kotlinjc_friendsactivity_app"
2222
minSdk = 24
2323
targetSdk = 36
24-
versionCode = 3
25-
versionName = "1.0.2"
24+
25+
//изменение от 6 октября 2025
26+
versionCode = 4
27+
versionName = "1.0.3"
2628

2729
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2830
}

app/src/main/java/apc/appcradle/kotlinjc_friendsactivity_app/data/SensorsManager.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ class SensorsManager(
9999

100100
fun trancate() {
101101
statsRepository.trancate()
102+
currentSteps = 0
103+
stepsWithoutChecking = 0
104+
isFirstStart = true
102105
loadSteps()
103106
}
104107

@@ -107,6 +110,7 @@ class SensorsManager(
107110
_allSteps.value = loadedSteps.allSteps
108111
_weeklySteps.value = loadedSteps.weeklySteps
109112
stepsInitialWeekly = loadedSteps.weeklySteps
113+
currentSteps = loadedSteps.weeklySteps
110114
}
111115

112116
override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {}

app/src/main/java/apc/appcradle/kotlinjc_friendsactivity_app/data/StatsRepository.kt

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)