Skip to content

Commit 14ab156

Browse files
committed
fix first day of week
1 parent a2f56f9 commit 14ab156

File tree

5 files changed

+19
-5
lines changed

5 files changed

+19
-5
lines changed

app/src/androidTest/java/com/example/util/simpletimetracker/SettingsTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import androidx.test.espresso.matcher.ViewMatchers.isNotChecked
1616
import androidx.test.espresso.matcher.ViewMatchers.withId
1717
import androidx.test.espresso.matcher.ViewMatchers.withText
1818
import androidx.test.ext.junit.runners.AndroidJUnit4
19+
import com.example.util.simpletimetracker.core.extension.setWeekToFirstDay
1920
import com.example.util.simpletimetracker.core.mapper.ColorMapper
2021
import com.example.util.simpletimetracker.domain.model.DayOfWeek
2122
import com.example.util.simpletimetracker.utils.BaseUiTest
@@ -571,7 +572,7 @@ class SettingsTest : BaseUiTest() {
571572
.apply {
572573
val recordDay = if (isTodaySunday) Calendar.MONDAY else Calendar.SUNDAY
573574
firstDayOfWeek = recordDay
574-
set(Calendar.DAY_OF_WEEK, recordDay)
575+
setWeekToFirstDay()
575576
set(Calendar.HOUR_OF_DAY, 15)
576577
}
577578
testUtils.addRecord(

app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.test.espresso.matcher.ViewMatchers.withClassName
99
import androidx.test.espresso.matcher.ViewMatchers.withId
1010
import androidx.test.espresso.matcher.ViewMatchers.withText
1111
import androidx.test.ext.junit.runners.AndroidJUnit4
12+
import com.example.util.simpletimetracker.core.extension.setWeekToFirstDay
1213
import com.example.util.simpletimetracker.domain.model.DayOfWeek
1314
import com.example.util.simpletimetracker.utils.BaseUiTest
1415
import com.example.util.simpletimetracker.utils.NavUtils
@@ -695,7 +696,7 @@ class StatisticsRangesTest : BaseUiTest() {
695696
set(Calendar.MINUTE, 0)
696697
set(Calendar.SECOND, 0)
697698
set(Calendar.MILLISECOND, 0)
698-
set(Calendar.DAY_OF_WEEK, firstDayOfWeek)
699+
setWeekToFirstDay()
699700
}
700701
val rangeStart = calendar.timeInMillis
701702
val rangeEnd = calendar.apply { add(Calendar.DATE, 6) }.timeInMillis

core/src/main/java/com/example/util/simpletimetracker/core/extension/OtherExtensions.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.example.util.simpletimetracker.core.extension
33
import android.os.StrictMode
44
import com.example.util.simpletimetracker.domain.model.Record
55
import com.example.util.simpletimetracker.navigation.params.TypesFilterParams
6+
import java.util.Calendar
67

78
inline fun <T, R> T.allowDiskWrite(block: T.() -> R): R {
89
val oldPolicy = StrictMode.allowThreadDiskWrites()
@@ -18,4 +19,13 @@ fun Record.isNotFiltered(filter: TypesFilterParams): Boolean {
1819
.filterIsInstance<TypesFilterParams.FilteredRecordTag.Tagged>().map { it.id }) ||
1920
(tagId == 0L && typeId !in filter.filteredRecordTags
2021
.filterIsInstance<TypesFilterParams.FilteredRecordTag.Untagged>().map { it.typeId })
22+
}
23+
24+
fun Calendar.setWeekToFirstDay() {
25+
val currentTime = timeInMillis
26+
set(Calendar.DAY_OF_WEEK, firstDayOfWeek)
27+
// If went to future - go back a week
28+
if (timeInMillis > currentTime) {
29+
add(Calendar.DATE, -7)
30+
}
2131
}

core/src/main/java/com/example/util/simpletimetracker/core/mapper/TimeMapper.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.example.util.simpletimetracker.core.mapper
22

33
import com.example.util.simpletimetracker.core.R
4+
import com.example.util.simpletimetracker.core.extension.setWeekToFirstDay
45
import com.example.util.simpletimetracker.core.repo.ResourceRepo
56
import com.example.util.simpletimetracker.domain.model.DayOfWeek
67
import com.example.util.simpletimetracker.domain.model.RangeLength
@@ -308,7 +309,7 @@ class TimeMapper @Inject constructor(
308309
rangeEnd = calendar.apply { add(Calendar.DATE, 1) }.timeInMillis
309310
}
310311
RangeLength.WEEK -> {
311-
calendar.set(Calendar.DAY_OF_WEEK, calendar.firstDayOfWeek)
312+
calendar.setWeekToFirstDay()
312313
calendar.add(Calendar.DATE, shift * 7)
313314
rangeStart = calendar.timeInMillis
314315
rangeEnd = calendar.apply { add(Calendar.DATE, 7) }.timeInMillis
@@ -386,7 +387,7 @@ class TimeMapper @Inject constructor(
386387
set(Calendar.MINUTE, 0)
387388
set(Calendar.SECOND, 0)
388389
set(Calendar.MILLISECOND, 0)
389-
set(Calendar.DAY_OF_WEEK, this.firstDayOfWeek)
390+
calendar.setWeekToFirstDay()
390391
add(Calendar.DATE, weeksFromToday * 7)
391392
}
392393
val rangeStart = calendar.timeInMillis

feature_statistics_detail/src/main/java/com/example/util/simpletimetracker/feature_statistics_detail/interactor/StatisticsDetailChartInteractor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.example.util.simpletimetracker.feature_statistics_detail.interactor
22

33
import com.example.util.simpletimetracker.core.extension.isNotFiltered
4+
import com.example.util.simpletimetracker.core.extension.setWeekToFirstDay
45
import com.example.util.simpletimetracker.core.interactor.TypesFilterInteractor
56
import com.example.util.simpletimetracker.core.mapper.RangeMapper
67
import com.example.util.simpletimetracker.core.mapper.TimeMapper
@@ -208,7 +209,7 @@ class StatisticsDetailChartInteractor @Inject constructor(
208209
set(Calendar.SECOND, 0)
209210
set(Calendar.MILLISECOND, 0)
210211
}
211-
calendar.set(Calendar.DAY_OF_WEEK, calendar.firstDayOfWeek)
212+
calendar.setWeekToFirstDay()
212213
calendar.add(Calendar.DATE, -shift * 7)
213214

214215
val legend = timeMapper.formatShortMonth(calendar.timeInMillis)

0 commit comments

Comments
 (0)