Add workaround for session duration change logic bug

This commit is contained in:
Jonas Lochmann 2024-01-01 01:00:00 +01:00
parent c80690f76e
commit 40b45457d4
No known key found for this signature in database
GPG key ID: 8B8C9AEE10FA5B36
6 changed files with 84 additions and 54 deletions

View file

@ -1,5 +1,5 @@
/*
* TimeLimit Copyright <C> 2019- 2020 Jonas Lochmann
* TimeLimit Copyright <C> 2019- 2023 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -43,15 +43,15 @@ object RemainingSessionDuration {
rule.dayMask.toInt() and (1 shl dayOfWeek) != 0 &&
rule.startMinuteOfDay <= minuteOfDay && rule.endMinuteOfDay >= minuteOfDay
) {
val remaining = durationsOfCategory.find {
it.startMinuteOfDay == rule.startMinuteOfDay &&
it.endMinuteOfDay == rule.endMinuteOfDay &&
it.maxSessionDuration == rule.sessionDurationMilliseconds &&
it.sessionPauseDuration == rule.sessionPauseMilliseconds &&
it.lastUsage + it.sessionPauseDuration > timestamp
}?.let { durationItem ->
val remaining = durationsOfCategory.filter {
it.startMinuteOfDay >= rule.startMinuteOfDay &&
it.endMinuteOfDay <= rule.endMinuteOfDay &&
it.maxSessionDuration >= rule.sessionDurationMilliseconds &&
it.sessionPauseDuration <= rule.sessionPauseMilliseconds &&
it.lastUsage + rule.sessionPauseMilliseconds > timestamp
}.map { durationItem ->
(durationItem.maxSessionDuration - durationItem.lastSessionDuration).coerceAtLeast(0)
} ?: rule.sessionDurationMilliseconds.toLong()
}.minOrNull() ?: rule.sessionDurationMilliseconds.toLong()
result = min(result, remaining)
}