Skip to content

Commit 18f1788

Browse files
authored
Respect limit in message pagination (#103)
* add api client with grpc kotlin * respect the limit for pagination * fix the lint issue
1 parent e9dc790 commit 18f1788

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

library/src/androidTest/java/org/xmtp/android/library/LocalInstrumentedTest.kt

+6-3
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,17 @@ class LocalInstrumentedTest {
128128
date.time = date.time - 5000
129129
convo.send(text = "10 seconds ago", sentAt = date)
130130
Thread.sleep(5000)
131+
convo.send(text = "now first")
131132
convo.send(text = "now")
132133
val messages = convo.messages()
133-
assertEquals(2, messages.size)
134+
assertEquals(3, messages.size)
135+
val messagesLimit = convo.messages(limit = 2)
136+
assertEquals(2, messagesLimit.size)
134137
val nowMessage = messages[0]
135138
assertEquals("now", nowMessage.body)
136-
val messages2 = convo.messages(before = nowMessage.sent)
139+
val messages2 = convo.messages(limit = 1, before = nowMessage.sent)
137140
val tenSecondsAgoMessage = messages2[0]
138-
assertEquals("10 seconds ago", tenSecondsAgoMessage.body)
141+
assertEquals("now first", tenSecondsAgoMessage.body)
139142
val messages3 = convo.messages(after = tenSecondsAgoMessage.sent)
140143
val nowMessage2 = messages3[0]
141144
assertEquals("now", nowMessage2.body)

library/src/main/java/org/xmtp/android/library/ApiClient.kt

+5-1
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,18 @@ data class GRPCApiClient(
123123
}
124124

125125
override suspend fun envelopes(topic: String, pagination: Pagination?): List<Envelope> {
126-
val envelopes: MutableList<Envelope> = mutableListOf()
126+
var envelopes: MutableList<Envelope> = mutableListOf()
127127
var hasNextPage = true
128128
var cursor: Cursor? = null
129129
while (hasNextPage) {
130130
val response = query(topic = topic, pagination = pagination, cursor = cursor)
131131
envelopes.addAll(response.envelopesList)
132132
cursor = response.pagingInfo.cursor
133133
hasNextPage = response.envelopesList.isNotEmpty() && response.pagingInfo.hasCursor()
134+
if (pagination?.limit != null && envelopes.size >= pagination.limit) {
135+
envelopes = envelopes.take(pagination.limit).toMutableList()
136+
break
137+
}
134138
}
135139
return envelopes
136140
}

0 commit comments

Comments
 (0)