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 0617d92f2fa23e1431699f51bfa6a30a337ff1cb..09029da0ca85838535c58f720027c940b8a6008f 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactListViewModel.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactListViewModel.kt
@@ -33,12 +33,6 @@ constructor(
         loadContacts()
     }
 
-    override fun onCleared() {
-        super.onCleared()
-        // todo: also reset filterBy?
-        _selectedContactId.value = null
-    }
-
     private val _filterBy = mutableStateOf("")
     private val _selectedContactId = mutableStateOf<ContactId?>(null)
 
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 97d7a96a76dda3289434f992b35b3030a4c926fa..3092b4e8a16519aa3413400a61eafa65fe3790f8 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt
@@ -62,6 +62,9 @@ constructor(
     val newMessage: State<String> = _newMessage
 
     fun setContactId(id: ContactId) {
+        if (_contactId.value == id)
+            return
+
         _contactId.value = id
         _contactItem.value = ContactItem(
             contactManager.getContact(id),
@@ -69,6 +72,7 @@ constructor(
             conversationManager.getGroupCount(id),
         )
         loadMessages()
+        setNewMessage("")
     }
 
     fun setNewMessage(msg: String) {