@@ -8,7 +8,6 @@ import org.xmtp.android.library.codecs.EncodedContent
8
8
import org.xmtp.android.library.codecs.compress
9
9
import org.xmtp.android.library.libxmtp.MessageV3
10
10
import org.xmtp.android.library.messages.DecryptedMessage
11
- import org.xmtp.android.library.messages.MessageKind
12
11
import org.xmtp.android.library.messages.PagingInfoSortDirection
13
12
import org.xmtp.android.library.messages.Topic
14
13
import org.xmtp.proto.message.api.v1.MessageApiOuterClass
@@ -18,7 +17,6 @@ import uniffi.xmtpv3.FfiListMessagesOptions
18
17
import uniffi.xmtpv3.FfiMessage
19
18
import uniffi.xmtpv3.FfiMessageCallback
20
19
import uniffi.xmtpv3.GroupPermissions
21
- import uniffi.xmtpv3.org.xmtp.android.library.codecs.ContentTypeGroupMembershipChange
22
20
import java.util.Date
23
21
import kotlin.time.Duration.Companion.nanoseconds
24
22
import kotlin.time.DurationUnit
@@ -95,17 +93,13 @@ class Group(val client: Client, private val libXMTPGroup: FfiGroup) {
95
93
sentAfterNs = after?.time?.nanoseconds?.toLong(DurationUnit .NANOSECONDS ),
96
94
limit = limit?.toLong()
97
95
)
98
- ).map {
99
- MessageV3 (client, it).decode()
100
- }
101
-
102
- val filteredMessages = messages.filterNot {
103
- it.encodedContent.type == ContentTypeGroupMembershipChange && it.kind != MessageKind .MEMBERSHIP_CHANGE
96
+ ).mapNotNull {
97
+ MessageV3 (client, it).decodeOrNull()
104
98
}
105
99
106
100
return when (direction) {
107
- MessageApiOuterClass .SortDirection .SORT_DIRECTION_ASCENDING -> filteredMessages
108
- else -> filteredMessages .reversed()
101
+ MessageApiOuterClass .SortDirection .SORT_DIRECTION_ASCENDING -> messages
102
+ else -> messages .reversed()
109
103
}
110
104
}
111
105
@@ -121,36 +115,19 @@ class Group(val client: Client, private val libXMTPGroup: FfiGroup) {
121
115
sentAfterNs = after?.time?.nanoseconds?.toLong(DurationUnit .NANOSECONDS ),
122
116
limit = limit?.toLong()
123
117
)
124
- ).map {
125
- MessageV3 (client, it).decrypt()
126
- }
127
-
128
- val filteredMessages = messages.filterNot {
129
- it.encodedContent.type == ContentTypeGroupMembershipChange && it.kind != MessageKind .MEMBERSHIP_CHANGE
118
+ ).mapNotNull {
119
+ MessageV3 (client, it).decryptOrNull()
130
120
}
131
121
132
122
return when (direction) {
133
- MessageApiOuterClass .SortDirection .SORT_DIRECTION_ASCENDING -> filteredMessages
134
- else -> filteredMessages .reversed()
123
+ MessageApiOuterClass .SortDirection .SORT_DIRECTION_ASCENDING -> messages
124
+ else -> messages .reversed()
135
125
}
136
126
}
137
127
138
- suspend fun processMessage (envelopeBytes : ByteArray ): DecodedMessage {
128
+ suspend fun processMessage (envelopeBytes : ByteArray ): MessageV3 {
139
129
val message = libXMTPGroup.processStreamedGroupMessage(envelopeBytes)
140
- val decodedMessage = MessageV3 (client, message).decode()
141
- if (decodedMessage.encodedContent.type == ContentTypeGroupMembershipChange && decodedMessage.kind != MessageKind .MEMBERSHIP_CHANGE ) {
142
- throw XMTPException (" Invalid message" )
143
- }
144
- return decodedMessage
145
- }
146
-
147
- suspend fun processMessageDecrypted (envelopeBytes : ByteArray ): DecryptedMessage {
148
- val message = libXMTPGroup.processStreamedGroupMessage(envelopeBytes)
149
- val decryptedMessage = MessageV3 (client, message).decrypt()
150
- if (decryptedMessage.encodedContent.type == ContentTypeGroupMembershipChange && decryptedMessage.kind != MessageKind .MEMBERSHIP_CHANGE ) {
151
- throw XMTPException (" Invalid message" )
152
- }
153
- return decryptedMessage
130
+ return MessageV3 (client, message)
154
131
}
155
132
156
133
fun isActive (): Boolean {
@@ -198,9 +175,9 @@ class Group(val client: Client, private val libXMTPGroup: FfiGroup) {
198
175
fun streamMessages (): Flow <DecodedMessage > = callbackFlow {
199
176
val messageCallback = object : FfiMessageCallback {
200
177
override fun onMessage (message : FfiMessage ) {
201
- val decodedMessage = MessageV3 (client, message).decode ()
202
- if ( ! ( decodedMessage.encodedContent.type == ContentTypeGroupMembershipChange && decodedMessage.kind != MessageKind . MEMBERSHIP_CHANGE )) {
203
- trySend(decodedMessage )
178
+ val decodedMessage = MessageV3 (client, message).decodeOrNull ()
179
+ decodedMessage?. let {
180
+ trySend(it )
204
181
}
205
182
}
206
183
}
@@ -212,9 +189,9 @@ class Group(val client: Client, private val libXMTPGroup: FfiGroup) {
212
189
fun streamDecryptedMessages (): Flow <DecryptedMessage > = callbackFlow {
213
190
val messageCallback = object : FfiMessageCallback {
214
191
override fun onMessage (message : FfiMessage ) {
215
- val decryptedMessage = MessageV3 (client, message).decrypt ()
216
- if ( ! ( decryptedMessage.encodedContent.type == ContentTypeGroupMembershipChange && decryptedMessage.kind != MessageKind . MEMBERSHIP_CHANGE )) {
217
- trySend(decryptedMessage )
192
+ val decryptedMessage = MessageV3 (client, message).decryptOrNull ()
193
+ decryptedMessage?. let {
194
+ trySend(it )
218
195
}
219
196
}
220
197
}
0 commit comments