diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Habit.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Habit.kt index d25e7b310..2d354e7b8 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Habit.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Habit.kt @@ -68,6 +68,19 @@ data class Habit( } } + fun isFailedToday(): Boolean { + val today = DateUtils.getTodayWithOffset() + val value = computedEntries.get(today).value + return if (isNumerical) { + when (targetType) { + NumericalHabitType.AT_LEAST -> value / 1000.0 < targetValue + NumericalHabitType.AT_MOST -> value / 1000.0 > targetValue + } + } else { + value == Entry.NO + } + } + fun recompute() { computedEntries.recomputeFrom( originalEntries = originalEntries, diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/HabitMatcher.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/HabitMatcher.kt index b57e55ef0..f26e00006 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/HabitMatcher.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/HabitMatcher.kt @@ -26,7 +26,7 @@ data class HabitMatcher( fun matches(habit: Habit): Boolean { if (!isArchivedAllowed && habit.isArchived) return false if (isReminderRequired && !habit.hasReminder()) return false - if (!isCompletedAllowed && habit.isCompletedToday()) return false + if (!isCompletedAllowed && (habit.isCompletedToday() || habit.isFailedToday())) return false return true }