@@ -26,6 +26,7 @@ import expo.modules.xmtpreactnativesdk.wrappers.DecryptedLocalAttachment
2626import expo.modules.xmtpreactnativesdk.wrappers.DisappearingMessageSettingsWrapper
2727import expo.modules.xmtpreactnativesdk.wrappers.DmWrapper
2828import expo.modules.xmtpreactnativesdk.wrappers.EncryptedLocalAttachment
29+ import expo.modules.xmtpreactnativesdk.wrappers.GroupSyncSummaryWrapper
2930import expo.modules.xmtpreactnativesdk.wrappers.GroupWrapper
3031import expo.modules.xmtpreactnativesdk.wrappers.InboxStateWrapper
3132import expo.modules.xmtpreactnativesdk.wrappers.KeyPackageStatusWrapper
@@ -584,7 +585,7 @@ class XMTPModule : Module() {
584585 logV(" ffiRevokeAllOtherInstallationsSignatureText" )
585586 val client = clients[installationId] ? : throw XMTPException (" No client" )
586587 val sigRequest = client.ffiRevokeAllOtherInstallations()
587- sigRequest.let {
588+ sigRequest? .let {
588589 clientSignatureRequests[installationId] = it
589590 it.signatureText()
590591 }
@@ -1012,7 +1013,10 @@ class XMTPModule : Module() {
10121013 afterNs = queryParams.afterNs,
10131014 direction = DecodedMessage .SortDirection .valueOf(
10141015 queryParams.direction ? : " DESCENDING"
1015- )
1016+ ),
1017+ insertedAfterNs = queryParams.insertedAfterNs,
1018+ insertedBeforeNs = queryParams.insertedBeforeNs,
1019+ sortBy = getMessageSortBy(queryParams.sortBy)
10161020 )?.map { MessageWrapper .encode(it) }
10171021 }
10181022 }
@@ -1029,7 +1033,10 @@ class XMTPModule : Module() {
10291033 afterNs = queryParams.afterNs,
10301034 direction = DecodedMessage .SortDirection .valueOf(
10311035 queryParams.direction ? : " DESCENDING"
1032- )
1036+ ),
1037+ insertedAfterNs = queryParams.insertedAfterNs,
1038+ insertedBeforeNs = queryParams.insertedBeforeNs,
1039+ sortBy = getMessageSortBy(queryParams.sortBy)
10331040 )?.map { MessageWrapper .encode(it) }
10341041 }
10351042 }
@@ -1224,7 +1231,8 @@ class XMTPModule : Module() {
12241231 createGroupParams.groupName,
12251232 createGroupParams.groupImageUrl,
12261233 createGroupParams.groupDescription,
1227- createGroupParams.disappearingMessageSettings
1234+ createGroupParams.disappearingMessageSettings,
1235+ createGroupParams.appData
12281236 )
12291237 GroupWrapper .encode(client, group)
12301238 }
@@ -1246,7 +1254,8 @@ class XMTPModule : Module() {
12461254 createGroupParams.groupName,
12471255 createGroupParams.groupImageUrl,
12481256 createGroupParams.groupDescription,
1249- createGroupParams.disappearingMessageSettings
1257+ createGroupParams.disappearingMessageSettings,
1258+ createGroupParams.appData
12501259 )
12511260 GroupWrapper .encode(client, group)
12521261 }
@@ -1270,7 +1279,8 @@ class XMTPModule : Module() {
12701279 createGroupParams.groupName,
12711280 createGroupParams.groupImageUrl,
12721281 createGroupParams.groupDescription,
1273- createGroupParams.disappearingMessageSettings
1282+ createGroupParams.disappearingMessageSettings,
1283+ createGroupParams.appData
12741284 )
12751285 GroupWrapper .encode(client, group)
12761286 }
@@ -1294,7 +1304,8 @@ class XMTPModule : Module() {
12941304 createGroupParams.groupName,
12951305 createGroupParams.groupImageUrl,
12961306 createGroupParams.groupDescription,
1297- createGroupParams.disappearingMessageSettings
1307+ createGroupParams.disappearingMessageSettings,
1308+ createGroupParams.appData
12981309 )
12991310 GroupWrapper .encode(client, group)
13001311 }
@@ -1315,7 +1326,8 @@ class XMTPModule : Module() {
13151326 createGroupParams.groupName,
13161327 createGroupParams.groupImageUrl,
13171328 createGroupParams.groupDescription,
1318- createGroupParams.disappearingMessageSettings
1329+ createGroupParams.disappearingMessageSettings,
1330+ createGroupParams.appData
13191331 )
13201332 GroupWrapper .encode(client, group)
13211333 }
@@ -1365,9 +1377,8 @@ class XMTPModule : Module() {
13651377 logV(" syncAllConversations" )
13661378 val client = clients[installationId] ? : throw XMTPException (" No client" )
13671379 val consentStates = consentStringStates?.let { ConsentWrapper .getConsentStates(it) }
1368- val numGroupsSyncedInt: Int =
1369- client.conversations.syncAllConversations(consentStates).numSynced.toInt()
1370- numGroupsSyncedInt
1380+ val summary = client.conversations.syncAllConversations(consentStates)
1381+ GroupSyncSummaryWrapper .encode(summary)
13711382 }
13721383 }
13731384
@@ -1485,6 +1496,26 @@ class XMTPModule : Module() {
14851496 }
14861497 }
14871498
1499+ AsyncFunction (" groupAppData" ) Coroutine { installationId: String , groupId: String ->
1500+ withContext(Dispatchers .IO ) {
1501+ logV(" groupAppData" )
1502+ val client = clients[installationId] ? : throw XMTPException (" No client" )
1503+ val group = client.conversations.findGroup(groupId)
1504+ ? : throw XMTPException (" no group found for $groupId " )
1505+ group.appData()
1506+ }
1507+ }
1508+
1509+ AsyncFunction (" updateGroupAppData" ) Coroutine { installationId: String , groupId: String , appData: String ->
1510+ withContext(Dispatchers .IO ) {
1511+ logV(" updateGroupAppData" )
1512+ val client = clients[installationId] ? : throw XMTPException (" No client" )
1513+ val group = client.conversations.findGroup(groupId)
1514+ ? : throw XMTPException (" no group found for $groupId " )
1515+ group.updateAppData(appData)
1516+ }
1517+ }
1518+
14881519 AsyncFunction (" disappearingMessageSettings" ) Coroutine { installationId: String , conversationId: String ->
14891520 withContext(Dispatchers .IO ) {
14901521 logV(" disappearingMessageSettings" )
@@ -2029,15 +2060,15 @@ class XMTPModule : Module() {
20292060 }
20302061 }
20312062
2032- AsyncFunction (" createArchive" ) Coroutine { installationId: String , path: String , encryptionKey: List <Int >, startNs: Int? , endNs: Int? , archiveElements: List <String >? ->
2063+ AsyncFunction (" createArchive" ) Coroutine { installationId: String , path: String , encryptionKey: List <Int >, startNs: Int? , endNs: Int? , archiveElements: List <String >? , excludeDisappearingMessages : Boolean? ->
20332064 withContext(Dispatchers .IO ) {
20342065 val client = clients[installationId] ? : throw XMTPException (" No client" )
20352066 val encryptionKeyBytes =
20362067 encryptionKey.foldIndexed(ByteArray (encryptionKey.size)) { i, a, v ->
20372068 a.apply { set(i, v.toByte()) }
20382069 }
20392070 val elements = archiveElements?.map { getArchiveElement(it) } ? : listOf (ArchiveElement .MESSAGES , ArchiveElement .CONSENT )
2040- val archiveOptions = ArchiveOptions (startNs?.toLong(), endNs?.toLong(), elements)
2071+ val archiveOptions = ArchiveOptions (startNs?.toLong(), endNs?.toLong(), elements, excludeDisappearingMessages ? : false )
20412072 client.createArchive(path, encryptionKeyBytes, archiveOptions)
20422073 }
20432074 }
@@ -2348,6 +2379,13 @@ class XMTPModule : Module() {
23482379 }
23492380 }
23502381
2382+ private fun getMessageSortBy (sortBy : String? ): DecodedMessage .SortBy {
2383+ return when (sortBy) {
2384+ " INSERTED_TIME" -> DecodedMessage .SortBy .INSERTED_TIME
2385+ else -> DecodedMessage .SortBy .SENT_TIME
2386+ }
2387+ }
2388+
23512389 private val preAuthenticateToInboxCallback: suspend () -> Unit = {
23522390 sendEvent(" preAuthenticateToInboxCallback" )
23532391 preAuthenticateToInboxCallbackDeferred?.await()
0 commit comments