feat(core-reminders): ReminderOverride.minutesOrEmpty

This commit is contained in:
makiolaj committed 2026-10-15 16:50:51 +02:00
1 parent d4970ba2bc
commit 1cc7f8f71d
3 files changed
+12

No files matched your search

+2
View File
@@ -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
@@ -19,6 +19,9 @@ sealed interface ReminderOverride {
data class Minutes(val minutes: List<Int>) : ReminderOverride
}
/** The lead times of a [ReminderOverride.Minutes]; empty for [ReminderOverride.Inherit] and [ReminderOverride.None]. */
fun ReminderOverride.minutesOrEmpty(): List<Int> = (this as? ReminderOverride.Minutes)?.minutes.orEmpty()
/** Distinct, ascending lead times — the canonical form stored and resolved. */
fun List<Int>.normalizeReminders(): List<Int> = distinct().sorted()
@@ -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()
}
}