Skip to content

Commit aa09f50

Browse files
committed
Add MessageReceiptManager and MessageReceiptReporter to ChatClient
1 parent 86aae64 commit aa09f50

File tree

1 file changed

+22
-7
lines changed
  • stream-chat-android-client/src/main/java/io/getstream/chat/android/client

1 file changed

+22
-7
lines changed

stream-chat-android-client/src/main/java/io/getstream/chat/android/client/ChatClient.kt

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ import io.getstream.chat.android.client.plugin.factory.PluginFactory
131131
import io.getstream.chat.android.client.plugin.factory.ThrottlingPluginFactory
132132
import io.getstream.chat.android.client.query.AddMembersParams
133133
import io.getstream.chat.android.client.query.CreateChannelParams
134+
import io.getstream.chat.android.client.receipts.MessageReceiptManager
135+
import io.getstream.chat.android.client.receipts.MessageReceiptReporter
134136
import io.getstream.chat.android.client.scope.ClientScope
135137
import io.getstream.chat.android.client.scope.UserScope
136138
import io.getstream.chat.android.client.setup.state.ClientState
@@ -331,6 +333,19 @@ internal constructor(
331333

332334
private var _repositoryFacade: RepositoryFacade? = null
333335

336+
internal val messageReceiptManager = MessageReceiptManager(
337+
scope = userScope,
338+
now = now,
339+
getCurrentUser = ::getCurrentUser,
340+
messageReceiptRepository = repository,
341+
)
342+
343+
private val messageReceiptReporter = MessageReceiptReporter(
344+
scope = userScope,
345+
chatClient = this,
346+
messageReceiptRepository = repository,
347+
)
348+
334349
private var pushNotificationReceivedListener: PushNotificationReceivedListener =
335350
PushNotificationReceivedListener { _, _ -> }
336351

@@ -451,13 +466,13 @@ internal constructor(
451466
mutableClientState.setUser(user)
452467
}
453468

454-
is NewMessageEvent,
455-
is NotificationReminderDueEvent,
456-
-> {
457-
// No other events should potentially show notifications
469+
is NewMessageEvent -> {
458470
notifications.onChatEvent(event)
471+
messageReceiptManager.markMessagesAsDelivered(messages = listOf(event.message))
459472
}
460473

474+
is NotificationReminderDueEvent -> notifications.onChatEvent(event)
475+
461476
is ConnectingEvent -> {
462477
logger.i { "[handleEvent] event: ConnectingEvent" }
463478
mutableClientState.setConnectionState(ConnectionState.Connecting)
@@ -646,6 +661,7 @@ internal constructor(
646661
tokenManager.setTokenProvider(tokenProvider)
647662
appSettingsManager.loadAppSettings()
648663
warmUp()
664+
messageReceiptReporter.start()
649665
logger.i { "[initializeClientWithUser] user.id: '${user.id}'completed" }
650666
}
651667

@@ -2906,15 +2922,14 @@ internal constructor(
29062922
* @param messages The list of messages to mark as delivered.
29072923
*/
29082924
@CheckResult
2909-
public fun markMessagesAsDelivered(messages: List<Message>): Call<Unit> {
2910-
return api.markDelivered(messages)
2925+
public fun markMessagesAsDelivered(messages: List<Message>): Call<Unit> =
2926+
api.markDelivered(messages)
29112927
.doOnStart(userScope) {
29122928
logger.d { "[markMessagesAsDelivered] #doOnStart; messages: ${messages.size}" }
29132929
}
29142930
.doOnResult(userScope) { result ->
29152931
logger.v { "[markMessagesAsDelivered] #doOnResult; completed: $result" }
29162932
}
2917-
}
29182933

29192934
/**
29202935
* Marks a given thread as read.

0 commit comments

Comments
 (0)