mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-07-25 23:25:20 +00:00
fix timestamps
This commit is contained in:
@@ -88,12 +88,12 @@ class MessageHandler(private val myPeerID: String) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create BitchatMessage - use local system time for incoming messages
|
// Create BitchatMessage - preserve source packet timestamp
|
||||||
val message = BitchatMessage(
|
val message = BitchatMessage(
|
||||||
id = privateMessage.messageID,
|
id = privateMessage.messageID,
|
||||||
sender = delegate?.getPeerNickname(peerID) ?: "Unknown",
|
sender = delegate?.getPeerNickname(peerID) ?: "Unknown",
|
||||||
content = privateMessage.content,
|
content = privateMessage.content,
|
||||||
timestamp = java.util.Date(), // Use local system time instead of packet timestamp
|
timestamp = java.util.Date(packet.timestamp.toLong()),
|
||||||
isRelay = false,
|
isRelay = false,
|
||||||
originalSender = null,
|
originalSender = null,
|
||||||
isPrivate = true,
|
isPrivate = true,
|
||||||
@@ -343,7 +343,7 @@ class MessageHandler(private val myPeerID: String) {
|
|||||||
sender = delegate?.getPeerNickname(peerID) ?: "unknown",
|
sender = delegate?.getPeerNickname(peerID) ?: "unknown",
|
||||||
content = String(packet.payload, Charsets.UTF_8),
|
content = String(packet.payload, Charsets.UTF_8),
|
||||||
senderPeerID = peerID,
|
senderPeerID = peerID,
|
||||||
timestamp = Date()
|
timestamp = Date(packet.timestamp.toLong())
|
||||||
)
|
)
|
||||||
|
|
||||||
delegate?.onMessageReceived(message)
|
delegate?.onMessageReceived(message)
|
||||||
@@ -369,7 +369,7 @@ class MessageHandler(private val myPeerID: String) {
|
|||||||
sender = delegate?.getPeerNickname(peerID) ?: "unknown",
|
sender = delegate?.getPeerNickname(peerID) ?: "unknown",
|
||||||
content = String(packet.payload, Charsets.UTF_8),
|
content = String(packet.payload, Charsets.UTF_8),
|
||||||
senderPeerID = peerID,
|
senderPeerID = peerID,
|
||||||
timestamp = Date()
|
timestamp = Date(packet.timestamp.toLong())
|
||||||
)
|
)
|
||||||
delegate?.onMessageReceived(message)
|
delegate?.onMessageReceived(message)
|
||||||
|
|
||||||
|
|||||||
@@ -680,7 +680,6 @@ class NostrGeohashService(
|
|||||||
private fun storeGeohashMessage(geohash: String, message: BitchatMessage) {
|
private fun storeGeohashMessage(geohash: String, message: BitchatMessage) {
|
||||||
val messages = geohashMessageHistory.getOrPut(geohash) { mutableListOf() }
|
val messages = geohashMessageHistory.getOrPut(geohash) { mutableListOf() }
|
||||||
messages.add(message)
|
messages.add(message)
|
||||||
messages.sortBy { it.timestamp }
|
|
||||||
|
|
||||||
// Limit message history to prevent memory issues
|
// Limit message history to prevent memory issues
|
||||||
if (messages.size > maxGeohashMessages) {
|
if (messages.size > maxGeohashMessages) {
|
||||||
@@ -1234,8 +1233,8 @@ class NostrGeohashService(
|
|||||||
val senderName = displayNameForNostrPubkeyUI(event.pubkey)
|
val senderName = displayNameForNostrPubkeyUI(event.pubkey)
|
||||||
val content = event.content
|
val content = event.content
|
||||||
|
|
||||||
// Use local time instead of Nostr event time for consistent message ordering
|
// Preserve Nostr event time to avoid reordering
|
||||||
val messageTimestamp = Date()
|
val messageTimestamp = Date(event.createdAt.toLong() * 1000L)
|
||||||
// Note: mentions parsing needs peer nicknames parameter
|
// Note: mentions parsing needs peer nicknames parameter
|
||||||
// val mentions = messageManager.parseMentions(content, peerNicknames, nickname)
|
// val mentions = messageManager.parseMentions(content, peerNicknames, nickname)
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ object ConversationAliasResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (didMerge) {
|
if (didMerge) {
|
||||||
targetList.sortBy { it.timestamp }
|
// Preserve arrival order; do not sort by timestamp
|
||||||
currentChats[targetPeerID] = targetList
|
currentChats[targetPeerID] = targetList
|
||||||
state.setPrivateChats(currentChats)
|
state.setPrivateChats(currentChats)
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ class MessageManager(private val state: ChatState) {
|
|||||||
fun addMessage(message: BitchatMessage) {
|
fun addMessage(message: BitchatMessage) {
|
||||||
val currentMessages = state.getMessagesValue().toMutableList()
|
val currentMessages = state.getMessagesValue().toMutableList()
|
||||||
currentMessages.add(message)
|
currentMessages.add(message)
|
||||||
currentMessages.sortBy { it.timestamp }
|
|
||||||
state.setMessages(currentMessages)
|
state.setMessages(currentMessages)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -39,7 +38,6 @@ class MessageManager(private val state: ChatState) {
|
|||||||
|
|
||||||
val channelMessageList = currentChannelMessages[channel]?.toMutableList() ?: mutableListOf()
|
val channelMessageList = currentChannelMessages[channel]?.toMutableList() ?: mutableListOf()
|
||||||
channelMessageList.add(message)
|
channelMessageList.add(message)
|
||||||
channelMessageList.sortBy { it.timestamp }
|
|
||||||
currentChannelMessages[channel] = channelMessageList
|
currentChannelMessages[channel] = channelMessageList
|
||||||
state.setChannelMessages(currentChannelMessages)
|
state.setChannelMessages(currentChannelMessages)
|
||||||
|
|
||||||
@@ -83,7 +81,6 @@ class MessageManager(private val state: ChatState) {
|
|||||||
|
|
||||||
val chatMessages = currentPrivateChats[peerID]?.toMutableList() ?: mutableListOf()
|
val chatMessages = currentPrivateChats[peerID]?.toMutableList() ?: mutableListOf()
|
||||||
chatMessages.add(message)
|
chatMessages.add(message)
|
||||||
chatMessages.sortBy { it.timestamp }
|
|
||||||
currentPrivateChats[peerID] = chatMessages
|
currentPrivateChats[peerID] = chatMessages
|
||||||
state.setPrivateChats(currentPrivateChats)
|
state.setPrivateChats(currentPrivateChats)
|
||||||
|
|
||||||
@@ -103,7 +100,6 @@ class MessageManager(private val state: ChatState) {
|
|||||||
}
|
}
|
||||||
val chatMessages = currentPrivateChats[peerID]?.toMutableList() ?: mutableListOf()
|
val chatMessages = currentPrivateChats[peerID]?.toMutableList() ?: mutableListOf()
|
||||||
chatMessages.add(message)
|
chatMessages.add(message)
|
||||||
chatMessages.sortBy { it.timestamp }
|
|
||||||
currentPrivateChats[peerID] = chatMessages
|
currentPrivateChats[peerID] = chatMessages
|
||||||
state.setPrivateChats(currentPrivateChats)
|
state.setPrivateChats(currentPrivateChats)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -501,7 +501,6 @@ class PrivateChatManager(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (didMerge) {
|
if (didMerge) {
|
||||||
targetList.sortBy { it.timestamp }
|
|
||||||
currentChats[targetPeerID] = targetList
|
currentChats[targetPeerID] = targetList
|
||||||
state.setPrivateChats(currentChats)
|
state.setPrivateChats(currentChats)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user