From 01c395b755a79749a1255224c8020783b18a54ea Mon Sep 17 00:00:00 2001 From: Naomi Plasterer Date: Wed, 16 Oct 2024 12:07:07 -0700 Subject: [PATCH] get all dm tests passing --- .../java/org/xmtp/android/library/DmTest.kt | 15 ++++++--------- .../java/org/xmtp/android/library/GroupTest.kt | 7 +++++-- .../main/java/org/xmtp/android/library/Client.kt | 2 +- .../org/xmtp/android/library/Conversations.kt | 5 ++++- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/library/src/androidTest/java/org/xmtp/android/library/DmTest.kt b/library/src/androidTest/java/org/xmtp/android/library/DmTest.kt index 3191ff86..6e0d72de 100644 --- a/library/src/androidTest/java/org/xmtp/android/library/DmTest.kt +++ b/library/src/androidTest/java/org/xmtp/android/library/DmTest.kt @@ -135,16 +135,13 @@ class DmTest { val boDm = runBlocking { boClient.conversations.newConversation(alix.walletAddress) } - runBlocking { - assertEquals("Starting Name", boDm.name) - assertEquals("startingurl.com", boDm.imageUrlSquare) - alixClient.conversations.syncGroups() - } - val alixDm = runBlocking { alixClient.conversations.listGroups().first() } + + runBlocking { alixClient.conversations.syncConversations() } + val alixDm = runBlocking { alixClient.conversations.listDms().first() } runBlocking { alixDm.sync() - alixDm.updateGroupName("This Is A Great Group") - alixDm.updateGroupImageUrlSquare("thisisanewurl.com") + alixDm.updateName("This Is A Great Group") + alixDm.updateImageUrlSquare("thisisanewurl.com") boDm.sync() } assertEquals("This Is A Great Group", boDm.name) @@ -342,7 +339,7 @@ class DmTest { val job = CoroutineScope(Dispatchers.IO).launch { try { - alixClient.conversations.streamAllGroupDecryptedMessages().collect { message -> + alixClient.conversations.streamAllDmDecryptedMessages().collect { message -> allMessages.add(message) } } catch (e: Exception) { diff --git a/library/src/androidTest/java/org/xmtp/android/library/GroupTest.kt b/library/src/androidTest/java/org/xmtp/android/library/GroupTest.kt index df8c7d07..d054651a 100644 --- a/library/src/androidTest/java/org/xmtp/android/library/GroupTest.kt +++ b/library/src/androidTest/java/org/xmtp/android/library/GroupTest.kt @@ -746,7 +746,10 @@ class GroupTest { val group2 = caroClient.conversations.newGroup(listOf(bo.walletAddress)) assertEquals(group2.id, awaitItem().id) - //Does not stream DMs + val dm = + caroClient.conversations.findOrCreateDm(bo.walletAddress) + expectNoEvents() + cancelAndConsumeRemainingEvents() } } @@ -769,7 +772,7 @@ class GroupTest { alixClient.conversations.newConversation(bo.walletAddress) Thread.sleep(2500) caroClient.conversations.newGroup(listOf(alix.walletAddress)) - //Does not stream DMs + caroClient.conversations.findOrCreateDm(alix.walletAddress) } Thread.sleep(2500) diff --git a/library/src/main/java/org/xmtp/android/library/Client.kt b/library/src/main/java/org/xmtp/android/library/Client.kt index 673fe2e6..13426729 100644 --- a/library/src/main/java/org/xmtp/android/library/Client.kt +++ b/library/src/main/java/org/xmtp/android/library/Client.kt @@ -597,7 +597,7 @@ class Client() { suspend fun findDm(address: String): Dm? { val client = v3Client ?: throw XMTPException("Error no V3 client initialized") - val inboxId = inboxIdFromAddress(address) ?: throw XMTPException("No inboxId present") + val inboxId = inboxIdFromAddress(address.lowercase()) ?: throw XMTPException("No inboxId present") try { return Dm(this, client.dmConversation(inboxId)) } catch (e: Exception) { diff --git a/library/src/main/java/org/xmtp/android/library/Conversations.kt b/library/src/main/java/org/xmtp/android/library/Conversations.kt index 9191e125..96492702 100644 --- a/library/src/main/java/org/xmtp/android/library/Conversations.kt +++ b/library/src/main/java/org/xmtp/android/library/Conversations.kt @@ -182,6 +182,9 @@ data class Conversations( } suspend fun findOrCreateDm(peerAddress: String): Dm { + if (peerAddress.lowercase() == client.address.lowercase()) { + throw XMTPException("Recipient is sender") + } val falseAddresses = client.canMessageV3(listOf(peerAddress)).filter { !it.value }.map { it.key } if (falseAddresses.isNotEmpty()) { @@ -189,7 +192,7 @@ data class Conversations( } var dm = client.findDm(peerAddress) if (dm == null) { - val dmConversation = libXMTPConversations?.createDm(peerAddress) + val dmConversation = libXMTPConversations?.createDm(peerAddress.lowercase()) ?: throw XMTPException("Client does not support V3 Dms") dm = Dm(client, dmConversation) client.contacts.allowGroups(groupIds = listOf(dm.id))