From 2f452627e853093dd699ea4c540640d5635fded4 Mon Sep 17 00:00:00 2001
From: ialokim <ialokim@mailbox.org>
Date: Sat, 30 Oct 2021 16:03:23 +0200
Subject: [PATCH] use new Briar core event to update contact list

---
 briar                                               |  2 +-
 .../briar/desktop/contact/ContactItem.kt            | 10 ++++------
 .../briar/desktop/contact/ContactListViewModel.kt   | 13 ++++---------
 .../ConversationMessageToBeSentEvent.kt             | 13 -------------
 .../desktop/conversation/ConversationViewModel.kt   |  1 -
 5 files changed, 9 insertions(+), 30 deletions(-)
 delete mode 100644 src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageToBeSentEvent.kt

diff --git a/briar b/briar
index 8a4fe7ca49..85dc27ed77 160000
--- a/briar
+++ b/briar
@@ -1 +1 @@
-Subproject commit 8a4fe7ca493285a136127f08e60303347d849cd2
+Subproject commit 85dc27ed77e8b1a94ce4bccf2e9dd0e4e9660e00
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt
index 7d18451058..d169ac99ef 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt
@@ -2,7 +2,6 @@ package org.briarproject.briar.desktop.contact
 
 import org.briarproject.bramble.api.contact.Contact
 import org.briarproject.briar.api.client.MessageTracker
-import org.briarproject.briar.api.conversation.ConversationMessageHeader
 import kotlin.math.max
 
 data class ContactItem(
@@ -21,13 +20,12 @@ data class ContactItem(
             timestamp = groupCount.latestMsgTime
         )
 
-    fun updateFromMessageHeader(h: ConversationMessageHeader): ContactItem {
-        return copy(
+    fun updateTimestampAndUnread(timestamp: Long, read: Boolean): ContactItem =
+        copy(
             isEmpty = false,
-            unread = if (h.isRead) unread else unread + 1,
-            timestamp = max(h.timestamp, timestamp)
+            unread = if (read) unread else unread + 1,
+            timestamp = max(timestamp, this.timestamp)
         )
-    }
 
     fun updateIsConnected(c: Boolean): ContactItem {
         return copy(isConnected = c)
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactListViewModel.kt b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactListViewModel.kt
index 09029da0ca..6cd88d2945 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactListViewModel.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactListViewModel.kt
@@ -11,8 +11,7 @@ import org.briarproject.bramble.api.contact.event.ContactAliasChangedEvent
 import org.briarproject.bramble.api.event.Event
 import org.briarproject.bramble.api.event.EventBus
 import org.briarproject.briar.api.conversation.ConversationManager
-import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent
-import org.briarproject.briar.desktop.conversation.ConversationMessageToBeSentEvent
+import org.briarproject.briar.api.conversation.event.ConversationMessageTrackedEvent
 import javax.inject.Inject
 
 class ContactListViewModel
@@ -67,13 +66,9 @@ constructor(
     override fun eventOccurred(e: Event?) {
         super.eventOccurred(e)
         when (e) {
-            is ConversationMessageReceivedEvent<*> -> {
-                LOG.info("Conversation message received, updating item")
-                updateItem(e.contactId) { it.updateFromMessageHeader(e.messageHeader) }
-            }
-            is ConversationMessageToBeSentEvent -> {
-                LOG.info("Conversation message added, updating item")
-                updateItem(e.contactId) { it.updateFromMessageHeader(e.messageHeader) }
+            is ConversationMessageTrackedEvent -> {
+                LOG.info { "Conversation message tracked, updating item" }
+                updateItem(e.contactId) { it.updateTimestampAndUnread(e.timestamp, e.read) }
             }
             // is AvatarUpdatedEvent -> {}
             is ContactAliasChangedEvent -> {
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageToBeSentEvent.kt b/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageToBeSentEvent.kt
deleted file mode 100644
index e79b036285..0000000000
--- a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageToBeSentEvent.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.briarproject.briar.desktop.conversation
-
-import org.briarproject.bramble.api.contact.ContactId
-import org.briarproject.bramble.api.event.Event
-import org.briarproject.briar.api.conversation.ConversationMessageHeader
-
-/**
- * An event that is broadcast when a new conversation message to be sent is added.
- */
-data class ConversationMessageToBeSentEvent(
-    val messageHeader: ConversationMessageHeader,
-    val contactId: ContactId
-) : Event()
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt b/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt
index 3092b4e8a1..e157bf065f 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt
@@ -101,7 +101,6 @@ constructor(
                 m.autoDeleteTimer
             )
             _messages.add(0, messageHeaderToItem(h))
-            eventBus.broadcast(ConversationMessageToBeSentEvent(h, _contactId.value!!))
         } catch (e: UnexpectedTimerException) {
             LOG.warn(e) {}
         } catch (e: DbException) {
-- 
GitLab