@@ -131,6 +131,8 @@ import io.getstream.chat.android.client.plugin.factory.PluginFactory
131131import io.getstream.chat.android.client.plugin.factory.ThrottlingPluginFactory
132132import io.getstream.chat.android.client.query.AddMembersParams
133133import 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
134136import io.getstream.chat.android.client.scope.ClientScope
135137import io.getstream.chat.android.client.scope.UserScope
136138import 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