Fix notification profile disable bug.

Fixes #11892
fork-5.53.8
Cody Henthorne 2022-01-12 12:24:52 -05:00
rodzic 89b918fbd2
commit 50b37e0402
2 zmienionych plików z 20 dodań i 2 usunięć

Wyświetl plik

@ -51,8 +51,15 @@ data class NotificationProfileSchedule(
return LocalTime.of(start / 100, start % 100)
}
fun startDateTime(now: LocalDateTime): LocalDateTime {
return start.toLocalDateTime(now)
fun startDateTime(localNow: LocalDateTime): LocalDateTime {
val localStart: LocalDateTime = start.toLocalDateTime(localNow)
val localEnd: LocalDateTime = end.toLocalDateTime(localNow)
return if (end < start && (daysEnabled.contains(localStart.dayOfWeek.minus(1)) && localNow.isBetween(localStart.minusDays(1), localEnd))) {
localStart.minusDays(1)
} else {
localStart
}
}
fun endTime(): LocalTime {

Wyświetl plik

@ -151,4 +151,15 @@ class NotificationProfilesTest {
val profiles = listOf(first.copy(schedule = schedule))
assertThat("active profile is first", NotificationProfiles.getActiveProfile(profiles, monday830am.toMillis(ZoneOffset.UTC), utc), `is`(profiles[0]))
}
@Test
fun `when profile is manually disabled and schedule is on but with start after end and now is before end then return null`() {
signalStore.dataSet.putLong(NotificationProfileValues.KEY_MANUALLY_ENABLED_PROFILE, 0)
signalStore.dataSet.putLong(NotificationProfileValues.KEY_MANUALLY_ENABLED_UNTIL, 0)
signalStore.dataSet.putLong(NotificationProfileValues.KEY_MANUALLY_DISABLED_AT, sunday830am.toMillis(ZoneOffset.UTC))
val schedule = NotificationProfileSchedule(id = 3L, enabled = true, start = 2200, end = 1000, daysEnabled = DayOfWeek.values().toSet())
val profiles = listOf(first.copy(schedule = schedule))
assertThat("active profile is null", NotificationProfiles.getActiveProfile(profiles, sunday9am.toMillis(ZoneOffset.UTC), utc), nullValue())
}
}