From 498c7edce3de84a896f1eeb0417fe38c8b4dde61 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Wed, 8 Jul 2026 22:15:09 +0200 Subject: [PATCH] Add invite helper code. --- .../compose/database/dao/MarmotOutboundDao.kt | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotOutboundDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotOutboundDao.kt index a30c697b..13d86b89 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotOutboundDao.kt +++ b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotOutboundDao.kt @@ -120,6 +120,30 @@ abstract class MarmotOutboundDao( return nostrGroupId } + @Transaction + open suspend fun inviteMember( + localChatRoom: LocalChatRoom, + peerPublicKey: HexKey, + peerKeyPackage: MarmotKeyPackage, + ) { + val sentGenerations: Int = database.chatMessageDao().countChatMessagesBySenderPublicKey( + chatRoomId = localChatRoom.chatRoom.id, + senderPublicKey = localChatRoom.chatRoom.userPublicKey + ) + + localChatRoom.chatRoom.toMlsGroup(sentGenerations)?.let { mlsGroup -> + inviteMember( + nostrGroupId = localChatRoom.chatRoom.id, + mlsGroup = mlsGroup, + userPublicKey = localChatRoom.chatRoom.userPublicKey, + peerPublicKey = peerPublicKey, + peerKeyPackage = peerKeyPackage, + relays = Relays.DefaultDMRelayList.map { it.url }, + isOneMemberInitialGroupCreation = false + ) + } + } + private suspend fun inviteMember( nostrGroupId: HexKey, mlsGroup: MlsGroup, @@ -127,7 +151,7 @@ abstract class MarmotOutboundDao( peerPublicKey: HexKey, peerKeyPackage: MarmotKeyPackage, relays: List = Relays.DefaultDMRelayList.map { it.url }, - isOneMemberInitialGroupCreation: Boolean + isOneMemberInitialGroupCreation: Boolean = false ) { logger.d("inviteMember: $peerPublicKey") val keyPackage = MlsKeyPackage.decodeTls( @@ -239,7 +263,7 @@ abstract class MarmotOutboundDao( } } - suspend fun deliveryWelcome( + private suspend fun deliveryWelcome( nostrGroupId: HexKey, userPublicKey: HexKey, welcomeBytes: ByteArray, @@ -302,6 +326,7 @@ abstract class MarmotOutboundDao( return GroupEventEncryption.encrypt(commitBytes, outerKey) } + @Transaction open suspend fun encryptAndSendMarmotInnerEvent( localChatRoom: LocalChatRoom,