@@ -9,7 +9,6 @@ import kotlinx.coroutines.flow.Flow
9
9
import org.xmtp.android.library.messages.Pagination
10
10
import org.xmtp.android.library.messages.Topic
11
11
import org.xmtp.proto.message.api.v1.MessageApiGrpcKt
12
- import org.xmtp.proto.message.api.v1.MessageApiOuterClass
13
12
import org.xmtp.proto.message.api.v1.MessageApiOuterClass.BatchQueryRequest
14
13
import org.xmtp.proto.message.api.v1.MessageApiOuterClass.BatchQueryResponse
15
14
import org.xmtp.proto.message.api.v1.MessageApiOuterClass.Cursor
@@ -18,6 +17,7 @@ import org.xmtp.proto.message.api.v1.MessageApiOuterClass.PublishRequest
18
17
import org.xmtp.proto.message.api.v1.MessageApiOuterClass.PublishResponse
19
18
import org.xmtp.proto.message.api.v1.MessageApiOuterClass.QueryRequest
20
19
import org.xmtp.proto.message.api.v1.MessageApiOuterClass.QueryResponse
20
+ import org.xmtp.proto.message.api.v1.MessageApiOuterClass.SubscribeRequest
21
21
import java.io.Closeable
22
22
import java.util.concurrent.TimeUnit
23
23
@@ -35,6 +35,7 @@ interface ApiClient {
35
35
suspend fun envelopes (topic : String , pagination : Pagination ? = null): List <Envelope >
36
36
suspend fun publish (envelopes : List <Envelope >): PublishResponse
37
37
suspend fun subscribe (topics : List <String >): Flow <Envelope >
38
+ suspend fun subscribe2 (request : Flow <SubscribeRequest >): Flow <Envelope >
38
39
}
39
40
40
41
data class GRPCApiClient (
@@ -81,6 +82,10 @@ data class GRPCApiClient(
81
82
}.build()
82
83
}
83
84
}.build()
85
+
86
+ fun makeSubscribeRequest (
87
+ topics : List <String >,
88
+ ): SubscribeRequest = SubscribeRequest .newBuilder().addAllContentTopics(topics).build()
84
89
}
85
90
86
91
private val channel: ManagedChannel =
@@ -174,8 +179,7 @@ data class GRPCApiClient(
174
179
}
175
180
176
181
override suspend fun subscribe (topics : List <String >): Flow <Envelope > {
177
- val request =
178
- MessageApiOuterClass .SubscribeRequest .newBuilder().addAllContentTopics(topics).build()
182
+ val request = makeSubscribeRequest(topics)
179
183
val headers = Metadata ()
180
184
181
185
headers.put(CLIENT_VERSION_HEADER_KEY , Constants .VERSION )
@@ -185,6 +189,16 @@ data class GRPCApiClient(
185
189
186
190
return client.subscribe(request, headers)
187
191
}
192
+ override suspend fun subscribe2 (request : Flow <SubscribeRequest >): Flow <Envelope > {
193
+ val headers = Metadata ()
194
+
195
+ headers.put(CLIENT_VERSION_HEADER_KEY , Constants .VERSION )
196
+ if (appVersion != null ) {
197
+ headers.put(APP_VERSION_HEADER_KEY , appVersion)
198
+ }
199
+
200
+ return client.subscribe2(request, headers)
201
+ }
188
202
189
203
override fun close () {
190
204
channel.shutdown().awaitTermination(5 , TimeUnit .SECONDS )
0 commit comments