diff --git a/CHANGELOG.md b/CHANGELOG.md index fa82398..6c2b933 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,8 @@ are no binary releases; "version" tracks the shared `version` in the root build - **`core-locale`** — `relativeTimeAgo(epochMillis, nowMillis, minResolution)`, the platform-localised "5 minutes ago" Calendula's backup and special-dates status lines build through `DateUtils.getRelativeTimeSpanString`. +- **`core-reminders`** — `ReminderOverride.minutesOrEmpty()`, the lead times of + a `Minutes` override and empty for `Inherit`/`None`. - **`identity`** — a pure-black (AMOLED) dark theme. `ColorScheme.toPureBlack()` sets `background`, `surface`, `surfaceDim` and `surfaceContainerLowest` to diff --git a/core-reminders/src/main/kotlin/de/jeanlucmakiola/floret/reminders/ReminderOverride.kt b/core-reminders/src/main/kotlin/de/jeanlucmakiola/floret/reminders/ReminderOverride.kt index a2f7b80..36d86de 100644 --- a/core-reminders/src/main/kotlin/de/jeanlucmakiola/floret/reminders/ReminderOverride.kt +++ b/core-reminders/src/main/kotlin/de/jeanlucmakiola/floret/reminders/ReminderOverride.kt @@ -19,6 +19,9 @@ sealed interface ReminderOverride { data class Minutes(val minutes: List) : ReminderOverride } +/** The lead times of a [ReminderOverride.Minutes]; empty for [ReminderOverride.Inherit] and [ReminderOverride.None]. */ +fun ReminderOverride.minutesOrEmpty(): List = (this as? ReminderOverride.Minutes)?.minutes.orEmpty() + /** Distinct, ascending lead times — the canonical form stored and resolved. */ fun List.normalizeReminders(): List = distinct().sorted() diff --git a/core-reminders/src/test/kotlin/de/jeanlucmakiola/floret/reminders/ReminderModelTest.kt b/core-reminders/src/test/kotlin/de/jeanlucmakiola/floret/reminders/ReminderModelTest.kt index 29d4399..170a6e2 100644 --- a/core-reminders/src/test/kotlin/de/jeanlucmakiola/floret/reminders/ReminderModelTest.kt +++ b/core-reminders/src/test/kotlin/de/jeanlucmakiola/floret/reminders/ReminderModelTest.kt @@ -64,4 +64,11 @@ class ReminderModelTest { assertThat(reminderOverrideForMinutes(emptyList(), allowInherit = false)) .isEqualTo(ReminderOverride.None) } + + @Test + fun `minutesOrEmpty reads the lead times and is empty otherwise`() { + assertThat(ReminderOverride.Minutes(listOf(10, 60)).minutesOrEmpty()).containsExactly(10, 60).inOrder() + assertThat(ReminderOverride.Inherit.minutesOrEmpty()).isEmpty() + assertThat(ReminderOverride.None.minutesOrEmpty()).isEmpty() + } }