commit 61297b8b9bf45c60de2c382ecc252f496828d040 parent 5cf690f1cf54e91df503ae7fb5d2be8818722ece Author: t3sserakt <t3ss@posteo.de> Date: Mon, 13 Apr 2026 17:46:32 +0200 stopping sender message getting back again on the chatbox Diffstat:
4 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/GNUnetMessenger/app/build.gradle.kts b/GNUnetMessenger/app/build.gradle.kts @@ -30,7 +30,7 @@ android { resValue("string", "app_name", "GNUnet Messenger") resValue("string", "default_account_name", "Alice") } - + create("bob") { dimension = "user" applicationId = "org.gnunet.gnunetmessenger.bob" diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/MainActivity.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/MainActivity.kt @@ -282,15 +282,18 @@ class MainActivity : AppCompatActivity() { MessageKind.TEXT, MessageKind.FILE -> { + val senderKey = chatMessage.sender?.key ?: "" + val profileKey = gnunetChat.getProfileKey(handle) + if (senderKey.isNotEmpty() && senderKey == profileKey) { + // Already added this message to the view when we sent it, + // so skip the echo to avoid a duplicate. + return + } + val viewModel = getChatViewModel(chatContext) val uuid = gnunetChat.getUserPointerForContext(chatContext) val localChatContext = chats[uuid] - chatMessage.type = - if (gnunetChat.getContactKey(chatMessage.sender!!) == gnunetChat.getProfileKey(handle)) { - ChatMessageType.OWN - } else { - ChatMessageType.OTHER - } + chatMessage.type = ChatMessageType.OTHER if (localChatContext != null) { viewModel?.addMessage(chatMessage) diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ipc/DtoMappers.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ipc/DtoMappers.kt @@ -15,6 +15,7 @@ fun ChatContactDto.toLocal(): ChatContact { return ChatContact( chatContext = this.chatContext?.toLocal() ?: ChatContext(ChatContextType.CONTACT, null, false, false), name = this.name ?: "", + key = this.key ?: "", blocked = this.isBlocked ) } @@ -42,7 +43,8 @@ fun ChatMessageDto.toLocal(ctx: ChatContext): ChatMessage { val senderContact = if (!senderName.isNullOrEmpty() || !senderKey.isNullOrEmpty()) { ChatContact( chatContext = ChatContext(ChatContextType.CONTACT, null, false, false), - name = senderName ?: "" + name = senderName ?: "", + key = senderKey ?: "" ) } else { null @@ -74,6 +76,7 @@ fun ChatContact.toDto(): ChatContactDto = ChatContactDto().apply { chatContext = this@toDto.chatContext.toDto() name = this@toDto.name + key = this@toDto.key isBlocked = this@toDto.blocked } @@ -96,7 +99,7 @@ fun ChatMessage.toDto(): ChatMessageDto = chatContext = this@toDto.chatContext.toDto() text = this@toDto.text timestamp = this@toDto.timestamp - senderKey = "" // Sender key will be resolved by the server + senderKey = this@toDto.sender?.key senderName = this@toDto.sender?.name kind = this@toDto.kind.code type = this@toDto.type?.code ?: -1 diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/model/ChatContact.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/model/ChatContact.kt @@ -31,5 +31,6 @@ import kotlinx.parcelize.Parcelize data class ChatContact( val chatContext: ChatContext, val name: String, + val key: String = "", var blocked: Boolean = false ) : Parcelable