@@ -18,6 +18,7 @@ import expo.modules.xmtpreactnativesdk.wrappers.ClientWrapper
1818import expo.modules.xmtpreactnativesdk.wrappers.ConsentWrapper
1919import expo.modules.xmtpreactnativesdk.wrappers.ContentJson
2020import expo.modules.xmtpreactnativesdk.wrappers.ConversationDebugInfoWrapper
21+ import expo.modules.xmtpreactnativesdk.wrappers.ConversationListParamsWrapper
2122import expo.modules.xmtpreactnativesdk.wrappers.ConversationParamsWrapper
2223import expo.modules.xmtpreactnativesdk.wrappers.ConversationWrapper
2324import expo.modules.xmtpreactnativesdk.wrappers.CreateGroupParamsWrapper
@@ -30,6 +31,7 @@ import expo.modules.xmtpreactnativesdk.wrappers.InboxStateWrapper
3031import expo.modules.xmtpreactnativesdk.wrappers.KeyPackageStatusWrapper
3132import expo.modules.xmtpreactnativesdk.wrappers.MemberWrapper
3233import expo.modules.xmtpreactnativesdk.wrappers.MembershipResultWrapper
34+ import expo.modules.xmtpreactnativesdk.wrappers.MessageQueryParamsWrapper
3335import expo.modules.xmtpreactnativesdk.wrappers.MessageWrapper
3436import expo.modules.xmtpreactnativesdk.wrappers.NetworkDebugInfoWrapper
3537import expo.modules.xmtpreactnativesdk.wrappers.PermissionPolicySetWrapper
@@ -47,6 +49,7 @@ import org.xmtp.android.library.ClientOptions
4749import org.xmtp.android.library.ConsentRecord
4850import org.xmtp.android.library.ConsentState
4951import org.xmtp.android.library.Conversation
52+ import org.xmtp.android.library.Conversations
5053import org.xmtp.android.library.Conversations.ConversationFilterType
5154import org.xmtp.android.library.PreEventCallback
5255import org.xmtp.android.library.PreferenceType
@@ -71,6 +74,7 @@ import org.xmtp.android.library.libxmtp.GroupPermissionPreconfiguration
7174import org.xmtp.android.library.libxmtp.PermissionOption
7275import org.xmtp.android.library.libxmtp.PublicIdentity
7376import org.xmtp.android.library.libxmtp.SignatureRequest
77+ import org.xmtp.android.library.MessageVisibilityOptions
7478import org.xmtp.android.library.messages.PrivateKeyBuilder
7579import org.xmtp.android.library.push.Service
7680import org.xmtp.android.library.push.XMTPPush
@@ -901,47 +905,65 @@ class XMTPModule : Module() {
901905 ).toJson()
902906 }
903907
904- AsyncFunction (" listGroups" ) Coroutine { installationId: String , groupParams: String? , limit : Int? , consentStringStates : List < String > ? ->
908+ AsyncFunction (" listGroups" ) Coroutine { installationId: String , groupParams: String? , queryParamsJson : String? ->
905909 withContext(Dispatchers .IO ) {
906910 logV(" listGroups" )
907911 val client = clients[installationId] ? : throw XMTPException (" No client" )
908912 val params = ConversationParamsWrapper .conversationParamsFromJson(groupParams ? : " " )
909- val consentStates = consentStringStates?. let { ConsentWrapper .getConsentStates(it) }
913+ val queryParams = ConversationListParamsWrapper .conversationListParamsFromJson(queryParamsJson ? : " " )
910914 val groups = client.conversations.listGroups(
911- limit = limit,
912- consentStates = consentStates
915+ createdAfterNs = queryParams.createdAfterNs,
916+ createdBeforeNs = queryParams.createdBeforeNs,
917+ lastActivityAfterNs = queryParams.lastActivityAfterNs,
918+ lastActivityBeforeNs = queryParams.lastActivityBeforeNs,
919+ limit = queryParams.limit,
920+ consentStates = queryParams.consentStates,
921+ orderBy = queryParams.orderBy ? : Conversations .ListConversationsOrderBy .LAST_ACTIVITY
913922 )
914923 groups.map { group ->
915924 GroupWrapper .encode(client, group, params)
916925 }
917926 }
918927 }
919928
920- AsyncFunction (" listDms" ) Coroutine { installationId: String , groupParams: String? , limit : Int? , consentStringStates : List < String > ? ->
929+ AsyncFunction (" listDms" ) Coroutine { installationId: String , groupParams: String? , queryParamsJson : String? ->
921930 withContext(Dispatchers .IO ) {
922931 logV(" listDms" )
923932 val client = clients[installationId] ? : throw XMTPException (" No client" )
924933 val params = ConversationParamsWrapper .conversationParamsFromJson(groupParams ? : " " )
925- val consentStates = consentStringStates?. let { ConsentWrapper .getConsentStates(it) }
934+ val queryParams = ConversationListParamsWrapper .conversationListParamsFromJson(queryParamsJson ? : " " )
926935 val dms = client.conversations.listDms(
927- limit = limit,
928- consentStates = consentStates
936+ createdAfterNs = queryParams.createdAfterNs,
937+ createdBeforeNs = queryParams.createdBeforeNs,
938+ lastActivityAfterNs = queryParams.lastActivityAfterNs,
939+ lastActivityBeforeNs = queryParams.lastActivityBeforeNs,
940+ limit = queryParams.limit,
941+ consentStates = queryParams.consentStates,
942+ orderBy = queryParams.orderBy ? : Conversations .ListConversationsOrderBy .LAST_ACTIVITY
929943 )
930944 dms.map { dm ->
931945 DmWrapper .encode(client, dm, params)
932946 }
933947 }
934948 }
935949
936- AsyncFunction (" listConversations" ) Coroutine { installationId: String , conversationParams: String? , limit : Int? , consentStringStates : List < String > ? ->
950+ AsyncFunction (" listConversations" ) Coroutine { installationId: String , conversationParams: String? , queryParamsJson : String? ->
937951 withContext(Dispatchers .IO ) {
938952 logV(" listConversations" )
939953 val client = clients[installationId] ? : throw XMTPException (" No client" )
940954 val params =
941955 ConversationParamsWrapper .conversationParamsFromJson(conversationParams ? : " " )
942- val consentStates = consentStringStates?. let { ConsentWrapper .getConsentStates(it) }
956+ val queryParams = ConversationListParamsWrapper .conversationListParamsFromJson(queryParamsJson ? : " " )
943957 val conversations =
944- client.conversations.list(limit = limit, consentStates = consentStates)
958+ client.conversations.list(
959+ createdAfterNs = queryParams.createdAfterNs,
960+ createdBeforeNs = queryParams.createdBeforeNs,
961+ lastActivityAfterNs = queryParams.lastActivityAfterNs,
962+ lastActivityBeforeNs = queryParams.lastActivityBeforeNs,
963+ limit = queryParams.limit,
964+ consentStates = queryParams.consentStates,
965+ orderBy = queryParams.orderBy ? : Conversations .ListConversationsOrderBy .LAST_ACTIVITY
966+ )
945967 conversations.map { conversation ->
946968 ConversationWrapper .encode(client, conversation, params)
947969 }
@@ -966,33 +988,35 @@ class XMTPModule : Module() {
966988 }
967989 }
968990
969- AsyncFunction (" conversationMessages" ) Coroutine { installationId: String , conversationId: String , limit : Int? , beforeNs : Long? , afterNs : Long? , direction : String? ->
991+ AsyncFunction (" conversationMessages" ) Coroutine { installationId: String , conversationId: String , queryParamsJson : String? ->
970992 withContext(Dispatchers .IO ) {
971993 logV(" conversationMessages" )
972994 val client = clients[installationId] ? : throw XMTPException (" No client" )
973995 val conversation = client.conversations.findConversation(conversationId)
996+ val queryParams = MessageQueryParamsWrapper .messageQueryParamsFromJson(queryParamsJson ? : " " )
974997 conversation?.messages(
975- limit = limit,
976- beforeNs = beforeNs,
977- afterNs = afterNs,
998+ limit = queryParams. limit,
999+ beforeNs = queryParams. beforeNs,
1000+ afterNs = queryParams. afterNs,
9781001 direction = DecodedMessage .SortDirection .valueOf(
979- direction ? : " DESCENDING"
1002+ queryParams. direction ? : " DESCENDING"
9801003 )
9811004 )?.map { MessageWrapper .encode(it) }
9821005 }
9831006 }
9841007
985- AsyncFunction (" conversationMessagesWithReactions" ) Coroutine { installationId: String , conversationId: String , limit : Int? , beforeNs : Long? , afterNs : Long? , direction : String? ->
1008+ AsyncFunction (" conversationMessagesWithReactions" ) Coroutine { installationId: String , conversationId: String , queryParamsJson : String? ->
9861009 withContext(Dispatchers .IO ) {
9871010 logV(" conversationMessagesWithReactions" )
9881011 val client = clients[installationId] ? : throw XMTPException (" No client" )
9891012 val conversation = client.conversations.findConversation(conversationId)
1013+ val queryParams = MessageQueryParamsWrapper .messageQueryParamsFromJson(queryParamsJson ? : " " )
9901014 conversation?.messagesWithReactions(
991- limit = limit,
992- beforeNs = beforeNs,
993- afterNs = afterNs,
1015+ limit = queryParams. limit,
1016+ beforeNs = queryParams. beforeNs,
1017+ afterNs = queryParams. afterNs,
9941018 direction = DecodedMessage .SortDirection .valueOf(
995- direction ? : " DESCENDING"
1019+ queryParams. direction ? : " DESCENDING"
9961020 )
9971021 )?.map { MessageWrapper .encode(it) }
9981022 }
@@ -1065,7 +1089,7 @@ class XMTPModule : Module() {
10651089 }
10661090 }
10671091
1068- AsyncFunction (" sendEncodedContent" ) Coroutine { installationId: String , conversationId: String , encodedContentData: List <Int > ->
1092+ AsyncFunction (" sendEncodedContent" ) Coroutine { installationId: String , conversationId: String , encodedContentData: List <Int >, shouldPush : Boolean ->
10691093 withContext(Dispatchers .IO ) {
10701094 logV(" sendEncodedContent" )
10711095 val client = clients[installationId] ? : throw XMTPException (" No client" )
@@ -1081,7 +1105,7 @@ class XMTPModule : Module() {
10811105 }
10821106 }
10831107 val encodedContent = EncodedContent .parseFrom(encodedContentDataBytes)
1084- conversation.send(encodedContent)
1108+ conversation.send(encodedContent, opts = MessageVisibilityOptions (shouldPush) )
10851109 }
10861110 }
10871111
@@ -1123,7 +1147,7 @@ class XMTPModule : Module() {
11231147 }
11241148 }
11251149
1126- AsyncFunction (" prepareEncodedMessage" ) Coroutine { installationId: String , conversationId: String , encodedContentData: List <Int > ->
1150+ AsyncFunction (" prepareEncodedMessage" ) Coroutine { installationId: String , conversationId: String , encodedContentData: List <Int >, shouldPush : Boolean ->
11271151 withContext(Dispatchers .IO ) {
11281152 logV(" prepareEncodedMessage" )
11291153 val client = clients[installationId] ? : throw XMTPException (" No client" )
@@ -1139,7 +1163,7 @@ class XMTPModule : Module() {
11391163 }
11401164 }
11411165 val encodedContent = EncodedContent .parseFrom(encodedContentDataBytes)
1142- conversation.prepareMessage(encodedContent = encodedContent)
1166+ conversation.prepareMessage(encodedContent = encodedContent, opts = MessageVisibilityOptions (shouldPush) )
11431167 }
11441168 }
11451169
@@ -2318,5 +2342,3 @@ class XMTPModule : Module() {
23182342 }
23192343 }
23202344}
2321-
2322-
0 commit comments