Fix bug with schedule end being set to midnight.

This commit is contained in:
Cody Henthorne
2021-12-20 13:16:31 -05:00
committed by Greyson Parrelli
parent b69ffe4e15
commit adcb1bae13
4 changed files with 26 additions and 5 deletions

View File

@@ -60,7 +60,8 @@ class EditNotificationProfileScheduleViewModel(
}
fun setEndTime(hour: Int, minute: Int) {
scheduleSubject.onNext(schedule.copy(end = hour * 100 + minute))
val adjustedEndHour = if (hour == 0) 24 else hour
scheduleSubject.onNext(schedule.copy(end = adjustedEndHour * 100 + minute))
}
fun setEnabled(enabled: Boolean) {

View File

@@ -180,8 +180,9 @@ object SignalDatabaseMigrations {
private const val REACTION_REFACTOR = 121
private const val PNI = 122
private const val NOTIFICATION_PROFILES = 123
private const val NOTIFICATION_PROFILES_END_FIX = 124
const val DATABASE_VERSION = 123
const val DATABASE_VERSION = 124
@JvmStatic
fun migrate(context: Context, db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
@@ -2222,6 +2223,15 @@ object SignalDatabaseMigrations {
db.execSQL("CREATE INDEX notification_profile_schedule_profile_index ON notification_profile_schedule (notification_profile_id)")
db.execSQL("CREATE INDEX notification_profile_allowed_members_profile_index ON notification_profile_allowed_members (notification_profile_id)")
}
if (oldVersion < NOTIFICATION_PROFILES_END_FIX) {
db.execSQL(
// language=sql
"""
UPDATE notification_profile_schedule SET end = 2400 WHERE end = 0
""".trimIndent()
)
}
}
@JvmStatic

View File

@@ -56,7 +56,8 @@ data class NotificationProfileSchedule(
}
fun endTime(): LocalTime {
return LocalTime.of(end / 100, end % 100)
val adjustedEnd = if (end == 2400) 0 else end
return LocalTime.of(adjustedEnd / 100, adjustedEnd % 100)
}
fun endDateTime(localNow: LocalDateTime): LocalDateTime {
@@ -73,8 +74,8 @@ data class NotificationProfileSchedule(
fun Int.toLocalDateTime(now: LocalDateTime): LocalDateTime {
if (this == 2400) {
return now.plusDays(1).withHour(0)
return now.plusDays(1).withHour(0).withMinute(0).withSecond(0)
}
return now.withHour(this / 100).withMinute(this % 100)
return now.withHour(this / 100).withMinute(this % 100).withSecond(0)
}