This repository has been archived by the owner on Jan 27, 2023. It is now read-only.
/
MarkMessageAsSeenActivityKotlin.kt
69 lines (55 loc) · 2.54 KB
/
MarkMessageAsSeenActivityKotlin.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.vonage.sample.channel.messaging
import android.os.Bundle
import android.os.PersistableBundle
import androidx.appcompat.app.AppCompatActivity
import com.nexmo.client.NexmoAttachmentEvent
import com.nexmo.client.NexmoClient
import com.nexmo.client.NexmoConversation
import com.nexmo.client.NexmoDeletedEvent
import com.nexmo.client.NexmoDeliveredEvent
import com.nexmo.client.NexmoMessageEventListener
import com.nexmo.client.NexmoSeenEvent
import com.nexmo.client.NexmoTextEvent
import com.nexmo.client.NexmoTypingEvent
import com.nexmo.client.request_listener.NexmoApiError
import com.nexmo.client.request_listener.NexmoRequestListener
import timber.log.Timber
class MarkMessageAsSeenActivityKotlin : AppCompatActivity() {
private val messageListener = object : NexmoMessageEventListener {
override fun onTypingEvent(typingEvent: NexmoTypingEvent) {}
override fun onAttachmentEvent(attachmentEvent: NexmoAttachmentEvent) {}
override fun onTextEvent(textEvent: NexmoTextEvent) {
textEvent.markAsSeen(markAsSeemListener)
}
override fun onSeenReceipt(seenEvent: NexmoSeenEvent) {}
override fun onEventDeleted(deletedEvent: NexmoDeletedEvent) {}
override fun onDeliveredReceipt(deliveredEvent: NexmoDeliveredEvent) {}
}
private val markAsSeemListener = object: NexmoRequestListener<Any> {
override fun onSuccess(p0: Any?) {
Timber.d("Message marked as seen")
}
override fun onError(apiError: NexmoApiError) {
Timber.d("Error: Unable to mark message as seen ${apiError.message}")
}
}
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, persistentState)
// No need for client initialization here. Client initialization is already done in BaseApplication class.
// NexmoClient.Builder().build(this)
val client = NexmoClient.get()
client.login("JWT token")
getConversation(client)
}
private fun getConversation(client: NexmoClient) {
client.getConversation("CONVERSATION_ID", object : NexmoRequestListener<NexmoConversation> {
override fun onSuccess(conversation: NexmoConversation?) {
Timber.d("Conversation loaded")
conversation?.addMessageEventListener(messageListener)
}
override fun onError(apiError: NexmoApiError) {
Timber.d("Error: Unable to load conversation ${apiError.message}")
}
})
}
}