From ea8b2b276a30689086aa13a1edf6b2c2bcee9913 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Sat, 29 Aug 2026 16:57:26 +0200 Subject: [PATCH] Remove hack because quarz didn't persist the secretTree in an older version. --- .../compose/database/dao/MarmotOutboundDao.kt | 7 +------ .../mantra/compose/database/model/ChatRoom.kt | 15 ++------------- .../repository/DatabaseMarmotRepository.kt | 7 +------ 3 files changed, 4 insertions(+), 25 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotOutboundDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotOutboundDao.kt index 70aee19b..1186a204 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotOutboundDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotOutboundDao.kt @@ -131,15 +131,10 @@ abstract class MarmotOutboundDao( peerPublicKey: HexKey, peerKeyPackage: MarmotKeyPackage, ) { - val sentGenerations: Int = database.chatMessageDao().countChatMessagesBySenderPublicKey( - chatRoomId = localChatRoom.chatRoom.id, - senderPublicKey = localChatRoom.chatRoom.userPublicKey - ) - // A room restored from an inbound gift wrap has no persisted MLS state, so there is // nothing to add a member to. Say so instead of silently doing nothing and letting the // caller report success. - val mlsGroup = localChatRoom.chatRoom.toMlsGroup(sentGenerations) + val mlsGroup = localChatRoom.chatRoom.toMlsGroup() ?: throw MarmotMissingChatGroupException( "No MLS group state for chat room ${localChatRoom.chatRoom.id}; cannot invite $peerPublicKey" ) diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatRoom.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatRoom.kt index bc4f4717..6d69d9ad 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatRoom.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatRoom.kt @@ -129,24 +129,13 @@ data class ChatRoom( } - fun toMlsGroup(pastGenerations: Int): MlsGroup? { + fun toMlsGroup(): MlsGroup? { return mlsGroupState?.let { - val mlsGroup = MlsGroup.restore( + return MlsGroup.restore( MlsGroupState.decodeTls( mlsGroupState.hexToByteArray() ) ) - - mlsGroup.skipGenerations(pastGenerations) - - mlsGroup } } } - -private fun MlsGroup.skipGenerations(generations: Int) { - val plainByteArray = ByteArray(0) - (0 until generations).forEach { _ -> - encrypt(plainByteArray) - } -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseMarmotRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseMarmotRepository.kt index ae355d6c..8a644e57 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseMarmotRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseMarmotRepository.kt @@ -133,12 +133,7 @@ class DatabaseMarmotRepository( nostrSignerSync: NostrSignerSync ) { database.chatRoomDao().findChatRoomById(marmotInnerEvent.chatRoomId)?.let { localChatRoom -> - val sentGenerations: Int = database.chatMessageDao().countChatMessagesBySenderPublicKey( - chatRoomId = localChatRoom.chatRoom.id, - senderPublicKey = nostrSignerSync.pubKey - ) - - localChatRoom.chatRoom.toMlsGroup(sentGenerations)?.let { mlsGroup -> + localChatRoom.chatRoom.toMlsGroup()?.let { mlsGroup -> logger.d("mlsGroup: $mlsGroup") database.marmotOutboundDao().encryptAndSendMarmotInnerEvent(