fix timestamps

This commit is contained in:
callebtc
2025-08-28 16:58:27 +02:00
parent 6cd91fe373
commit 50b97348b2
5 changed files with 7 additions and 13 deletions
@@ -88,12 +88,12 @@ class MessageHandler(private val myPeerID: String) {
return
}
// Create BitchatMessage - use local system time for incoming messages
// Create BitchatMessage - preserve source packet timestamp
val message = BitchatMessage(
id = privateMessage.messageID,
sender = delegate?.getPeerNickname(peerID) ?: "Unknown",
content = privateMessage.content,
timestamp = java.util.Date(), // Use local system time instead of packet timestamp
timestamp = java.util.Date(packet.timestamp.toLong()),
isRelay = false,
originalSender = null,
isPrivate = true,
@@ -343,7 +343,7 @@ class MessageHandler(private val myPeerID: String) {
sender = delegate?.getPeerNickname(peerID) ?: "unknown",
content = String(packet.payload, Charsets.UTF_8),
senderPeerID = peerID,
timestamp = Date()
timestamp = Date(packet.timestamp.toLong())
)
delegate?.onMessageReceived(message)
@@ -369,7 +369,7 @@ class MessageHandler(private val myPeerID: String) {
sender = delegate?.getPeerNickname(peerID) ?: "unknown",
content = String(packet.payload, Charsets.UTF_8),
senderPeerID = peerID,
timestamp = Date()
timestamp = Date(packet.timestamp.toLong())
)
delegate?.onMessageReceived(message)
@@ -680,7 +680,6 @@ class NostrGeohashService(
private fun storeGeohashMessage(geohash: String, message: BitchatMessage) {
val messages = geohashMessageHistory.getOrPut(geohash) { mutableListOf() }
messages.add(message)
messages.sortBy { it.timestamp }
// Limit message history to prevent memory issues
if (messages.size > maxGeohashMessages) {
@@ -1234,8 +1233,8 @@ class NostrGeohashService(
val senderName = displayNameForNostrPubkeyUI(event.pubkey)
val content = event.content
// Use local time instead of Nostr event time for consistent message ordering
val messageTimestamp = Date()
// Preserve Nostr event time to avoid reordering
val messageTimestamp = Date(event.createdAt.toLong() * 1000L)
// Note: mentions parsing needs peer nicknames parameter
// val mentions = messageManager.parseMentions(content, peerNicknames, nickname)
@@ -60,7 +60,7 @@ object ConversationAliasResolver {
}
}
if (didMerge) {
targetList.sortBy { it.timestamp }
// Preserve arrival order; do not sort by timestamp
currentChats[targetPeerID] = targetList
state.setPrivateChats(currentChats)
@@ -21,7 +21,6 @@ class MessageManager(private val state: ChatState) {
fun addMessage(message: BitchatMessage) {
val currentMessages = state.getMessagesValue().toMutableList()
currentMessages.add(message)
currentMessages.sortBy { it.timestamp }
state.setMessages(currentMessages)
}
@@ -39,7 +38,6 @@ class MessageManager(private val state: ChatState) {
val channelMessageList = currentChannelMessages[channel]?.toMutableList() ?: mutableListOf()
channelMessageList.add(message)
channelMessageList.sortBy { it.timestamp }
currentChannelMessages[channel] = channelMessageList
state.setChannelMessages(currentChannelMessages)
@@ -83,7 +81,6 @@ class MessageManager(private val state: ChatState) {
val chatMessages = currentPrivateChats[peerID]?.toMutableList() ?: mutableListOf()
chatMessages.add(message)
chatMessages.sortBy { it.timestamp }
currentPrivateChats[peerID] = chatMessages
state.setPrivateChats(currentPrivateChats)
@@ -103,7 +100,6 @@ class MessageManager(private val state: ChatState) {
}
val chatMessages = currentPrivateChats[peerID]?.toMutableList() ?: mutableListOf()
chatMessages.add(message)
chatMessages.sortBy { it.timestamp }
currentPrivateChats[peerID] = chatMessages
state.setPrivateChats(currentPrivateChats)
}
@@ -501,7 +501,6 @@ class PrivateChatManager(
}
if (didMerge) {
targetList.sortBy { it.timestamp }
currentChats[targetPeerID] = targetList
state.setPrivateChats(currentChats)