From 6d74c6acecdb7fa14e937de17c6a291ed9a016c4 Mon Sep 17 00:00:00 2001 From: null Date: Tue, 23 Jun 2026 22:39:31 -0500 Subject: [PATCH] feat(brand): primaryMessage constant + rotator holds flagship slogan 3x longer --- .../java/app/closer/ui/brand/CloserBrandCopy.kt | 6 +++++- .../closer/ui/components/BrandMessageRotator.kt | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/app/closer/ui/brand/CloserBrandCopy.kt b/app/src/main/java/app/closer/ui/brand/CloserBrandCopy.kt index 4d49c9d1..8f409f52 100644 --- a/app/src/main/java/app/closer/ui/brand/CloserBrandCopy.kt +++ b/app/src/main/java/app/closer/ui/brand/CloserBrandCopy.kt @@ -2,8 +2,12 @@ package app.closer.ui.brand /** Public-facing privacy copy that is accurate for every app state and account generation. */ object CloserBrandCopy { + /** The flagship privacy promise — shown first and held longer than the others in the rotator. */ + const val primaryMessage = + "Your private moments stay private. Your information is securely encrypted, never read, and never sold. Only you and your paired partner have the key." + val privacyMessages: List = listOf( - "Your private moments stay private. Your information is securely encrypted, never read, and never sold. Only you and your paired partner have the key.", + primaryMessage, "Your relationship is yours, not ours.", "Answer honestly. Reveal intentionally.", "For conversations that belong to the two of you.", diff --git a/app/src/main/java/app/closer/ui/components/BrandMessageRotator.kt b/app/src/main/java/app/closer/ui/components/BrandMessageRotator.kt index 65f57cc5..4b0642a3 100644 --- a/app/src/main/java/app/closer/ui/components/BrandMessageRotator.kt +++ b/app/src/main/java/app/closer/ui/components/BrandMessageRotator.kt @@ -31,7 +31,10 @@ fun BrandMessageRotator( messages: List = CloserBrandCopy.privacyMessages, color: Color = MaterialTheme.colorScheme.onSurfaceVariant, style: TextStyle = MaterialTheme.typography.bodyMedium, - intervalMillis: Long = 4_500L + intervalMillis: Long = 4_500L, + /** This message lingers [primaryHoldMultiplier]× longer than the rest (the flagship slogan). */ + primaryMessage: String? = CloserBrandCopy.primaryMessage, + primaryHoldMultiplier: Int = 3 ) { if (messages.isEmpty()) return @@ -47,10 +50,16 @@ fun BrandMessageRotator( } var index by remember(messages) { mutableIntStateOf(0) } - LaunchedEffect(messages, intervalMillis, reduceMotion) { + LaunchedEffect(messages, intervalMillis, reduceMotion, primaryMessage, primaryHoldMultiplier) { if (!reduceMotion && messages.size > 1) { while (true) { - delay(intervalMillis) + // Hold the flagship slogan on screen longer than the rest. + val hold = if (messages[index] == primaryMessage) { + intervalMillis * primaryHoldMultiplier + } else { + intervalMillis + } + delay(hold) index = (index + 1) % messages.size } }