feat(brand): primaryMessage constant + rotator holds flagship slogan 3x longer

This commit is contained in:
null 2026-06-23 22:39:31 -05:00
parent 7923835861
commit 6d74c6acec
2 changed files with 17 additions and 4 deletions

View File

@ -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<String> = 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.",

View File

@ -31,7 +31,10 @@ fun BrandMessageRotator(
messages: List<String> = 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
}
}