Skip to content

Commit fd5db9d

Browse files
committed
added getMessageActionsWithPaging
1 parent 4842933 commit fd5db9d

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

pubnub-kotlin/pubnub-kotlin-docs/src/main/kotlin/com/pubnub/docs/messageReactions/MessageReactionsOthers.kt

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package com.pubnub.docs.messageReactions
22

33
import com.pubnub.api.PubNub
44
import com.pubnub.api.PubNubException
5+
import com.pubnub.api.models.consumer.PNBoundedPage
6+
import com.pubnub.api.models.consumer.message_actions.PNGetMessageActionsResult
7+
import com.pubnub.api.models.consumer.message_actions.PNMessageAction
58
import com.pubnub.api.models.consumer.message_actions.PNRemoveMessageActionResult
69
import com.pubnub.api.v2.callbacks.Result
710

@@ -43,4 +46,50 @@ class MessageReactionsOthers {
4346
}
4447
// snippet.end
4548
}
49+
50+
private fun getMessageActionsWithPaging(pubnub: PubNub) {
51+
// https://www.pubnub.com/docs/sdks/kotlin/api-reference/message-actions#other-examples
52+
53+
// snippet.getMessageActionsWithPaging
54+
fun getMessageActionsWithPaging(
55+
channel: String,
56+
start: Long,
57+
callback: (actions: List<PNMessageAction>) -> Unit
58+
) {
59+
pubnub.getMessageActions(
60+
channel = channel,
61+
page = PNBoundedPage(limit = 5, start = start)
62+
).async { result: Result<PNGetMessageActionsResult> ->
63+
result.onSuccess { getMessageActionsResult: PNGetMessageActionsResult ->
64+
if (getMessageActionsResult.actions.isNotEmpty()) {
65+
callback.invoke(getMessageActionsResult.actions)
66+
getMessageActionsWithPaging(
67+
channel,
68+
getMessageActionsResult.actions.first().actionTimetoken!!,
69+
callback
70+
)
71+
} else {
72+
callback.invoke(emptyList())
73+
}
74+
}.onFailure { exception: PubNubException ->
75+
// Handle error
76+
}
77+
}
78+
}
79+
80+
// Usage example
81+
getMessageActionsWithPaging(
82+
channel = "my_channel",
83+
start = System.currentTimeMillis() * 10_000L
84+
) { actions ->
85+
actions.forEach {
86+
println(it.type)
87+
println(it.value)
88+
println(it.uuid)
89+
println(it.messageTimetoken)
90+
println(it.actionTimetoken)
91+
}
92+
}
93+
// snippet.end
94+
}
4695
}

0 commit comments

Comments
 (0)