diff --git a/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/active/model/BoostBlockState.kt b/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/active/model/BoostBlockState.kt index 1eda6da853..a2f2a2ffb9 100644 --- a/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/active/model/BoostBlockState.kt +++ b/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/active/model/BoostBlockState.kt @@ -1,6 +1,10 @@ package com.tangem.features.yield.supply.impl.active.model import kotlinx.datetime.Instant +import kotlin.time.Duration.Companion.days + +/** How long the awaiting-payout copy stays visible after the qualification period ends, before the block is hidden. */ +private val AWAITING_PAYOUT_WINDOW = 14.days /** What the boost block on the active screen should display, derived solely from the qualification end date. */ internal sealed interface BoostBlockState { @@ -11,12 +15,13 @@ internal sealed interface BoostBlockState { /** Qualification period is over — show the awaiting-payout copy. */ data object AwaitingPayout : BoostBlockState - /** No qualification end date — show nothing. */ + /** No qualification end date, or the awaiting-payout window has elapsed — show nothing. */ data object Hidden : BoostBlockState } internal fun resolveBoostBlockState(qualificationEndDate: Instant?, now: Instant): BoostBlockState = when { qualificationEndDate == null -> BoostBlockState.Hidden + now >= qualificationEndDate + AWAITING_PAYOUT_WINDOW -> BoostBlockState.Hidden now >= qualificationEndDate -> BoostBlockState.AwaitingPayout else -> BoostBlockState.DaysLeft(days = (qualificationEndDate - now).inWholeDays.toInt()) } \ No newline at end of file diff --git a/features/yield-supply/impl/src/test/java/com/tangem/features/yield/supply/impl/active/model/BoostBlockStateTest.kt b/features/yield-supply/impl/src/test/java/com/tangem/features/yield/supply/impl/active/model/BoostBlockStateTest.kt index 9d2dd5f854..63580acb2c 100644 --- a/features/yield-supply/impl/src/test/java/com/tangem/features/yield/supply/impl/active/model/BoostBlockStateTest.kt +++ b/features/yield-supply/impl/src/test/java/com/tangem/features/yield/supply/impl/active/model/BoostBlockStateTest.kt @@ -43,12 +43,33 @@ internal class BoostBlockStateTest { } @Test - fun `GIVEN past qualificationEndDate WHEN resolve THEN AwaitingPayout`() { + fun `GIVEN qualificationEndDate passed within 14 days WHEN resolve THEN AwaitingPayout`() { val result = resolveBoostBlockState( - qualificationEndDate = Instant.parse("2026-05-01T00:00:00Z"), + // 13d 23h 59m 59s ago — just inside the 14-day window + qualificationEndDate = Instant.parse("2026-05-14T00:00:01Z"), now = now, ) assertThat(result).isEqualTo(BoostBlockState.AwaitingPayout) } + + @Test + fun `GIVEN qualificationEndDate passed exactly 14 days ago WHEN resolve THEN Hidden`() { + val result = resolveBoostBlockState( + qualificationEndDate = Instant.parse("2026-05-14T00:00:00Z"), + now = now, + ) + + assertThat(result).isEqualTo(BoostBlockState.Hidden) + } + + @Test + fun `GIVEN qualificationEndDate passed more than 14 days ago WHEN resolve THEN Hidden`() { + val result = resolveBoostBlockState( + qualificationEndDate = Instant.parse("2026-05-01T00:00:00Z"), + now = now, + ) + + assertThat(result).isEqualTo(BoostBlockState.Hidden) + } } \ No newline at end of file