From 43491daff97b48dd8e741416d8cefe89e73f0cd5 Mon Sep 17 00:00:00 2001 From: Nicholas Tinsley Date: Fri, 16 Aug 2024 14:41:03 -0400 Subject: [PATCH] Add banner listener for the banners being hidden and shown. --- .../securesms/banner/BannerManager.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/banner/BannerManager.kt b/app/src/main/java/org/thoughtcrime/securesms/banner/BannerManager.kt index 32006db9be..651e110ccd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/banner/BannerManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/banner/BannerManager.kt @@ -17,7 +17,11 @@ import org.signal.core.util.logging.Log * A class that can be instantiated with a list of [Flow]s that produce [Banner]s, then applied to a [ComposeView], typically within a [Fragment]. * Usually, the [Flow]s will come from [Banner.BannerFactory] instances, but may also be produced by the other properties of the host. */ -class BannerManager(allFlows: Iterable>) { +class BannerManager @JvmOverloads constructor( + allFlows: Iterable>, + private val onNewBannerShownListener: () -> Unit = {}, + private val onNoBannerShownListener: () -> Unit = {} +) { companion object { val TAG = Log.tag(BannerManager::class) @@ -41,10 +45,15 @@ class BannerManager(allFlows: Iterable>) { setContent { val state = combinedFlow.collectAsStateWithLifecycle(initialValue = emptyList()) - state.value.firstOrNull()?.let { + val bannerToDisplay = state.value.firstOrNull() + if (bannerToDisplay != null) { Box { - it.DisplayBanner() + bannerToDisplay.DisplayBanner() } + + onNewBannerShownListener() + } else { + onNoBannerShownListener() } } }