@@ -2,6 +2,9 @@ package com.pubnub.docs.messageReactions
2
2
3
3
import com.pubnub.api.PubNub
4
4
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
5
8
import com.pubnub.api.models.consumer.message_actions.PNRemoveMessageActionResult
6
9
import com.pubnub.api.v2.callbacks.Result
7
10
@@ -43,4 +46,50 @@ class MessageReactionsOthers {
43
46
}
44
47
// snippet.end
45
48
}
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
+ }
46
95
}
0 commit comments