pow works

This commit is contained in:
callebtc
2025-08-30 17:17:57 +02:00
parent 6d74893eb3
commit 9d7e656ceb
@@ -282,14 +282,23 @@ private fun AnimatedMessageDisplay(
// Create a temporary message with animated content for formatting // Create a temporary message with animated content for formatting
val animatedMessage = message.copy(content = animatedContent) val animatedMessage = message.copy(content = animatedContent)
// Use the EXACT same formatting function as normal messages, including timestamp // Use formatting function without timestamp during animation
val annotatedText = formatMessageAsAnnotatedString( val annotatedText = if (isAnimating) {
message = animatedMessage, formatMessageAsAnnotatedStringWithoutTimestamp(
currentUserNickname = currentUserNickname, message = animatedMessage,
meshService = meshService, currentUserNickname = currentUserNickname,
colorScheme = colorScheme, meshService = meshService,
timeFormatter = timeFormatter colorScheme = colorScheme
) )
} else {
formatMessageAsAnnotatedString(
message = animatedMessage,
currentUserNickname = currentUserNickname,
meshService = meshService,
colorScheme = colorScheme,
timeFormatter = timeFormatter
)
}
// Use IDENTICAL Text composable structure as normal message // Use IDENTICAL Text composable structure as normal message
Text( Text(
@@ -305,3 +314,40 @@ private fun AnimatedMessageDisplay(
} }
/**
* Format message without timestamp and PoW badge for animation phase
* Identical to formatMessageAsAnnotatedString but excludes timestamp and PoW badge
*/
private fun formatMessageAsAnnotatedStringWithoutTimestamp(
message: com.bitchat.android.model.BitchatMessage,
currentUserNickname: String,
meshService: com.bitchat.android.mesh.BluetoothMeshService,
colorScheme: androidx.compose.material3.ColorScheme
): AnnotatedString {
// Get the full formatted text first
val timeFormatter = java.text.SimpleDateFormat("HH:mm:ss", java.util.Locale.getDefault())
val fullText = formatMessageAsAnnotatedString(
message = message,
currentUserNickname = currentUserNickname,
meshService = meshService,
colorScheme = colorScheme,
timeFormatter = timeFormatter
)
// Find and remove the timestamp and PoW badge at the end
val text = fullText.text
val timestampPattern = """ \[\d{2}:\d{2}:\d{2}].*$""".toRegex() // Matches " [HH:mm:ss] 12b" or just " [HH:mm:ss]"
val match = timestampPattern.find(text)
return if (match != null) {
// Remove timestamp and PoW portion
val endIndex = match.range.first
AnnotatedString(
text = text.substring(0, endIndex),
spanStyles = fullText.spanStyles.filter { it.end <= endIndex },
paragraphStyles = fullText.paragraphStyles.filter { it.end <= endIndex }
)
} else {
fullText
}
}