diff --git a/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationBanner.kt b/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationBanner.kt index 358b46ee5fb845b2e4d19de97627769e1e5e1d0a..e7d6995061bb7c36189a6b5d248b7b86ac30a5e7 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationBanner.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationBanner.kt @@ -23,7 +23,6 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size @@ -57,6 +56,7 @@ fun main() = preview { } @Composable +// [ColumnScope] needed for proper [AnimatedVisibility] implementation fun ColumnScope.ExpirationBanner(onExpired: () -> Unit) { var daysLeft by remember { mutableStateOf(0) } @@ -69,8 +69,8 @@ fun ColumnScope.ExpirationBanner(onExpired: () -> Unit) { LaunchedEffect(Unit) { periodicallyCheckIfExpired( reportDaysLeft = { daysLeft = it }, - onExpiry = { expired = true; onExpired() }, - reportHideThreshold = { showExpirationBanner = hideTimestamp <= it } + reportHideThreshold = { showExpirationBanner = hideTimestamp <= it }, + onExpiry = { showExpirationBanner = false; expired = true; onExpired() }, ) } @@ -102,13 +102,11 @@ fun ExpirationBanner( "${i18nP("expiration.banner.part1.nozero", daysLeft)} ${i18n("expiration.banner.part2")}" Text( text = text, - style = MaterialTheme.typography.body2 + style = MaterialTheme.typography.body2, + modifier = Modifier.weight(1f, true) ) - Spacer(Modifier.weight(1f)) - IconButton( - onClick = hide, - ) { - Icon(Icons.Filled.Close, i18n("hide"), Modifier.size(32.dp)) + IconButton(hide) { + Icon(Icons.Filled.Close, i18n("hide"), Modifier.size(24.dp)) } } } diff --git a/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationUtils.kt b/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationUtils.kt index 0694ada55d9374f40e36f1b766ca3db3fb09618b..d6f438a97a93aaa856a09ad1a148f6b3ef95263f 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationUtils.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationUtils.kt @@ -32,7 +32,7 @@ object ExpirationUtils { private val HIDE_INTERVAL = 1.days.inWholeMilliseconds // for testing uncomment the following instead - // private val EXPIRE_AFTER = Instant.now().toEpochMilli() + 10.seconds.inWholeMilliseconds + // private val EXPIRE_AFTER = Instant.now().toEpochMilli() + 30.seconds.inWholeMilliseconds // private val CHECK_INTERVAL = 1.seconds.inWholeMilliseconds // private val HIDE_INTERVAL = 10.seconds.inWholeMilliseconds @@ -46,16 +46,17 @@ object ExpirationUtils { suspend fun periodicallyCheckIfExpired( reportDaysLeft: (Int) -> Unit, - onExpiry: () -> Unit, reportHideThreshold: (Long) -> Unit, + onExpiry: () -> Unit, ) { while (true) { - reportDaysLeft(getDaysLeft()) if (isExpired()) { onExpiry() + break + } else { + reportDaysLeft(getDaysLeft()) + reportHideThreshold(hideThreshold()) } - - reportHideThreshold(hideThreshold()) delay(CHECK_INTERVAL) } }