mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-07-25 02:25:21 +00:00
pow works
This commit is contained in:
@@ -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) {
|
||||||
|
formatMessageAsAnnotatedStringWithoutTimestamp(
|
||||||
|
message = animatedMessage,
|
||||||
|
currentUserNickname = currentUserNickname,
|
||||||
|
meshService = meshService,
|
||||||
|
colorScheme = colorScheme
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
formatMessageAsAnnotatedString(
|
||||||
message = animatedMessage,
|
message = animatedMessage,
|
||||||
currentUserNickname = currentUserNickname,
|
currentUserNickname = currentUserNickname,
|
||||||
meshService = meshService,
|
meshService = meshService,
|
||||||
colorScheme = colorScheme,
|
colorScheme = colorScheme,
|
||||||
timeFormatter = timeFormatter
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user