From 81f85a77fa58691678adb2a0046675e4095424c3 Mon Sep 17 00:00:00 2001 From: Dharanish Date: Mon, 24 Jun 2024 22:36:28 +0200 Subject: [PATCH] SkipDays ignore previously entered entries --- .../org/isoron/uhabits/core/models/EntryList.kt | 13 ++++++++++--- .../java/org/isoron/uhabits/core/models/Habit.kt | 3 ++- .../uhabits/core/models/sqlite/SQLiteEntryList.kt | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/EntryList.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/EntryList.kt index eb4fedd04..18b91da2e 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/EntryList.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/EntryList.kt @@ -91,17 +91,24 @@ open class EntryList { open fun recomputeFrom( originalEntries: EntryList, frequency: Frequency, - isNumerical: Boolean + isNumerical: Boolean, + skipDays: SkipDays = SkipDays.NONE ) { clear() val original = originalEntries.getKnown() if (isNumerical) { - original.forEach { add(it) } + original.filter { !skipDays.isDaySkipped(it.timestamp) }.forEach { add(it) } } else { val intervals = buildIntervals(frequency, original) snapIntervalsTogether(intervals) val computed = buildEntriesFromInterval(original, intervals) - computed.filter { it.value != UNKNOWN || it.notes.isNotEmpty() }.forEach { add(it) } + computed + .filter { + !skipDays.isDaySkipped(it.timestamp) && + it.value != UNKNOWN || + it.notes.isNotEmpty() + } + .forEach { add(it) } } } 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 8c87a038a..e7acf5089 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 @@ -79,7 +79,8 @@ data class Habit( computedEntries.recomputeFrom( originalEntries = originalEntries, frequency = frequency, - isNumerical = isNumerical + isNumerical = isNumerical, + skipDays = skipDays ) val today = DateUtils.getTodayWithOffset() diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/sqlite/SQLiteEntryList.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/sqlite/SQLiteEntryList.kt index 013a071ca..824234ad2 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/sqlite/SQLiteEntryList.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/sqlite/SQLiteEntryList.kt @@ -78,7 +78,7 @@ class SQLiteEntryList(database: Database) : EntryList() { return super.getKnown() } - override fun recomputeFrom(originalEntries: EntryList, frequency: Frequency, isNumerical: Boolean) { + override fun recomputeFrom(originalEntries: EntryList, frequency: Frequency, isNumerical: Boolean, skipDays: SkipDays) { throw UnsupportedOperationException() }