Notifications: render current user name and avatar.

This commit is contained in:
Benoit Marty 2023-05-24 10:59:11 +02:00 committed by Benoit Marty
parent afa06fb03e
commit 7e889e5c0a
6 changed files with 83 additions and 66 deletions

View file

@ -16,21 +16,21 @@
package io.element.android.libraries.push.impl.notifications package io.element.android.libraries.push.impl.notifications
import android.content.Context
import android.os.Handler import android.os.Handler
import android.os.HandlerThread import android.os.HandlerThread
import androidx.annotation.WorkerThread import androidx.annotation.WorkerThread
import io.element.android.libraries.androidutils.throttler.FirstThrottler import io.element.android.libraries.androidutils.throttler.FirstThrottler
import io.element.android.libraries.core.cache.CircularCache import io.element.android.libraries.core.cache.CircularCache
import io.element.android.libraries.core.data.tryOrNull
import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.core.meta.BuildMeta
import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.AppScope
import io.element.android.libraries.di.ApplicationContext
import io.element.android.libraries.di.SingleIn import io.element.android.libraries.di.SingleIn
import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.core.ThreadId
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.push.api.store.PushDataStore import io.element.android.libraries.push.api.store.PushDataStore
import io.element.android.libraries.push.impl.R
import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent
import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent
import io.element.android.libraries.push.impl.notifications.model.shouldIgnoreMessageEventInRoom import io.element.android.libraries.push.impl.notifications.model.shouldIgnoreMessageEventInRoom
@ -38,6 +38,7 @@ import io.element.android.services.appnavstate.api.AppNavigationState
import io.element.android.services.appnavstate.api.AppNavigationStateService import io.element.android.services.appnavstate.api.AppNavigationStateService
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@ -48,7 +49,6 @@ import javax.inject.Inject
*/ */
@SingleIn(AppScope::class) @SingleIn(AppScope::class)
class NotificationDrawerManager @Inject constructor( class NotificationDrawerManager @Inject constructor(
@ApplicationContext context: Context,
private val pushDataStore: PushDataStore, private val pushDataStore: PushDataStore,
private val notifiableEventProcessor: NotifiableEventProcessor, private val notifiableEventProcessor: NotifiableEventProcessor,
private val notificationRenderer: NotificationRenderer, private val notificationRenderer: NotificationRenderer,
@ -57,6 +57,7 @@ class NotificationDrawerManager @Inject constructor(
private val appNavigationStateService: AppNavigationStateService, private val appNavigationStateService: AppNavigationStateService,
private val coroutineScope: CoroutineScope, private val coroutineScope: CoroutineScope,
private val buildMeta: BuildMeta, private val buildMeta: BuildMeta,
private val matrixAuthenticationService: MatrixAuthenticationService,
) { ) {
private val handlerThread: HandlerThread = HandlerThread("NotificationDrawerManager", Thread.MIN_PRIORITY) private val handlerThread: HandlerThread = HandlerThread("NotificationDrawerManager", Thread.MIN_PRIORITY)
@ -66,7 +67,6 @@ class NotificationDrawerManager @Inject constructor(
* Lazily initializes the NotificationState as we rely on having a current session in order to fetch the persisted queue of events. * Lazily initializes the NotificationState as we rely on having a current session in order to fetch the persisted queue of events.
*/ */
private val notificationState by lazy { createInitialNotificationState() } private val notificationState by lazy { createInitialNotificationState() }
private val avatarSize = context.resources.getDimensionPixelSize(R.dimen.profile_avatar_size)
private var currentAppNavigationState: AppNavigationState? = null private var currentAppNavigationState: AppNavigationState? = null
private val firstThrottler = FirstThrottler(200) private val firstThrottler = FirstThrottler(200)
@ -239,6 +239,7 @@ class NotificationDrawerManager @Inject constructor(
} }
} }
@WorkerThread
private fun renderEvents(eventsToRender: List<ProcessedEvent<NotifiableEvent>>) { private fun renderEvents(eventsToRender: List<ProcessedEvent<NotifiableEvent>>) {
// Group by sessionId // Group by sessionId
val eventsForSessions = eventsToRender.groupBy { val eventsForSessions = eventsToRender.groupBy {
@ -246,17 +247,29 @@ class NotificationDrawerManager @Inject constructor(
} }
eventsForSessions.forEach { (sessionId, notifiableEvents) -> eventsForSessions.forEach { (sessionId, notifiableEvents) ->
// TODO EAx val user = session.getUserOrDefault(session.myUserId) val currentUser = tryOrNull(
// myUserDisplayName cannot be empty else NotificationCompat.MessagingStyle() will crash onError = { Timber.e(it, "Unable to retrieve info for user ${sessionId.value}") },
val myUserDisplayName = "Todo display name" // user.toMatrixItem().getBestName() operation = {
// TODO EAx avatar URL runBlocking {
val myUserAvatarUrl = null // session.contentUrlResolver().resolveThumbnail( val client = matrixAuthenticationService.restoreSession(sessionId).getOrNull()
// contentUrl = user.avatarUrl,
// width = avatarSize, // myUserDisplayName cannot be empty else NotificationCompat.MessagingStyle() will crash
// height = avatarSize, val myUserDisplayName = client?.loadUserDisplayName()?.getOrNull() ?: sessionId.value
// method = ContentUrlResolver.ThumbnailMethod.SCALE val userAvatarUrl = client?.loadUserAvatarURLString()?.getOrNull()
//) MatrixUser(
notificationRenderer.render(sessionId, myUserDisplayName, myUserAvatarUrl, useCompleteNotificationFormat, notifiableEvents) userId = sessionId,
displayName = myUserDisplayName,
avatarUrl = userAvatarUrl
)
}
}
) ?: MatrixUser(
userId = sessionId,
displayName = sessionId.value,
avatarUrl = null
)
notificationRenderer.render(currentUser, useCompleteNotificationFormat, notifiableEvents)
} }
} }

View file

@ -18,7 +18,7 @@ package io.element.android.libraries.push.impl.notifications
import android.app.Notification import android.app.Notification
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.push.impl.notifications.factories.NotificationFactory import io.element.android.libraries.push.impl.notifications.factories.NotificationFactory
import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent
import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent
@ -35,9 +35,7 @@ class NotificationFactory @Inject constructor(
) { ) {
fun Map<RoomId, ProcessedMessageEvents>.toNotifications( fun Map<RoomId, ProcessedMessageEvents>.toNotifications(
sessionId: SessionId, currentUser: MatrixUser,
myUserDisplayName: String,
myUserAvatarUrl: String?
): List<RoomNotification> { ): List<RoomNotification> {
return map { (roomId, events) -> return map { (roomId, events) ->
when { when {
@ -45,11 +43,9 @@ class NotificationFactory @Inject constructor(
else -> { else -> {
val messageEvents = events.onlyKeptEvents().filterNot { it.isRedacted } val messageEvents = events.onlyKeptEvents().filterNot { it.isRedacted }
roomGroupMessageCreator.createRoomMessage( roomGroupMessageCreator.createRoomMessage(
sessionId = sessionId, currentUser = currentUser,
events = messageEvents, events = messageEvents,
roomId = roomId, roomId = roomId,
userDisplayName = myUserDisplayName,
userAvatarUrl = myUserAvatarUrl
) )
} }
} }
@ -99,7 +95,7 @@ class NotificationFactory @Inject constructor(
} }
fun createSummaryNotification( fun createSummaryNotification(
sessionId: SessionId, currentUser: MatrixUser,
roomNotifications: List<RoomNotification>, roomNotifications: List<RoomNotification>,
invitationNotifications: List<OneShotNotification>, invitationNotifications: List<OneShotNotification>,
simpleNotifications: List<OneShotNotification>, simpleNotifications: List<OneShotNotification>,
@ -112,7 +108,7 @@ class NotificationFactory @Inject constructor(
roomMeta.isEmpty() && invitationMeta.isEmpty() && simpleMeta.isEmpty() -> SummaryNotification.Removed roomMeta.isEmpty() && invitationMeta.isEmpty() && simpleMeta.isEmpty() -> SummaryNotification.Removed
else -> SummaryNotification.Update( else -> SummaryNotification.Update(
summaryGroupMessageCreator.createSummaryNotification( summaryGroupMessageCreator.createSummaryNotification(
sessionId = sessionId, currentUser = currentUser,
roomNotifications = roomMeta, roomNotifications = roomMeta,
invitationNotifications = invitationMeta, invitationNotifications = invitationMeta,
simpleNotifications = simpleMeta, simpleNotifications = simpleMeta,

View file

@ -18,7 +18,7 @@ package io.element.android.libraries.push.impl.notifications
import androidx.annotation.WorkerThread import androidx.annotation.WorkerThread
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent
import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent
import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent
@ -34,19 +34,17 @@ class NotificationRenderer @Inject constructor(
@WorkerThread @WorkerThread
fun render( fun render(
sessionId: SessionId, currentUser: MatrixUser,
myUserDisplayName: String,
myUserAvatarUrl: String?,
useCompleteNotificationFormat: Boolean, useCompleteNotificationFormat: Boolean,
eventsToProcess: List<ProcessedEvent<NotifiableEvent>> eventsToProcess: List<ProcessedEvent<NotifiableEvent>>
) { ) {
val (roomEvents, simpleEvents, invitationEvents) = eventsToProcess.groupByType() val (roomEvents, simpleEvents, invitationEvents) = eventsToProcess.groupByType()
with(notificationFactory) { with(notificationFactory) {
val roomNotifications = roomEvents.toNotifications(sessionId, myUserDisplayName, myUserAvatarUrl) val roomNotifications = roomEvents.toNotifications(currentUser)
val invitationNotifications = invitationEvents.toNotifications() val invitationNotifications = invitationEvents.toNotifications()
val simpleNotifications = simpleEvents.toNotifications() val simpleNotifications = simpleEvents.toNotifications()
val summaryNotification = createSummaryNotification( val summaryNotification = createSummaryNotification(
sessionId = sessionId, currentUser = currentUser,
roomNotifications = roomNotifications, roomNotifications = roomNotifications,
invitationNotifications = invitationNotifications, invitationNotifications = invitationNotifications,
simpleNotifications = simpleNotifications, simpleNotifications = simpleNotifications,
@ -56,21 +54,27 @@ class NotificationRenderer @Inject constructor(
// Remove summary first to avoid briefly displaying it after dismissing the last notification // Remove summary first to avoid briefly displaying it after dismissing the last notification
if (summaryNotification == SummaryNotification.Removed) { if (summaryNotification == SummaryNotification.Removed) {
Timber.d("Removing summary notification") Timber.d("Removing summary notification")
notificationDisplayer.cancelNotificationMessage(null, notificationIdProvider.getSummaryNotificationId(sessionId)) notificationDisplayer.cancelNotificationMessage(
tag = null,
id = notificationIdProvider.getSummaryNotificationId(currentUser.userId)
)
} }
roomNotifications.forEach { wrapper -> roomNotifications.forEach { wrapper ->
when (wrapper) { when (wrapper) {
is RoomNotification.Removed -> { is RoomNotification.Removed -> {
Timber.d("Removing room messages notification ${wrapper.roomId}") Timber.d("Removing room messages notification ${wrapper.roomId}")
notificationDisplayer.cancelNotificationMessage(wrapper.roomId.value, notificationIdProvider.getRoomMessagesNotificationId(sessionId)) notificationDisplayer.cancelNotificationMessage(
tag = wrapper.roomId.value,
id = notificationIdProvider.getRoomMessagesNotificationId(currentUser.userId)
)
} }
is RoomNotification.Message -> if (useCompleteNotificationFormat) { is RoomNotification.Message -> if (useCompleteNotificationFormat) {
Timber.d("Updating room messages notification ${wrapper.meta.roomId}") Timber.d("Updating room messages notification ${wrapper.meta.roomId}")
notificationDisplayer.showNotificationMessage( notificationDisplayer.showNotificationMessage(
wrapper.meta.roomId.value, tag = wrapper.meta.roomId.value,
notificationIdProvider.getRoomMessagesNotificationId(sessionId), id = notificationIdProvider.getRoomMessagesNotificationId(currentUser.userId),
wrapper.notification notification = wrapper.notification
) )
} }
} }
@ -80,14 +84,17 @@ class NotificationRenderer @Inject constructor(
when (wrapper) { when (wrapper) {
is OneShotNotification.Removed -> { is OneShotNotification.Removed -> {
Timber.d("Removing invitation notification ${wrapper.key}") Timber.d("Removing invitation notification ${wrapper.key}")
notificationDisplayer.cancelNotificationMessage(wrapper.key, notificationIdProvider.getRoomInvitationNotificationId(sessionId)) notificationDisplayer.cancelNotificationMessage(
tag = wrapper.key,
id = notificationIdProvider.getRoomInvitationNotificationId(currentUser.userId)
)
} }
is OneShotNotification.Append -> if (useCompleteNotificationFormat) { is OneShotNotification.Append -> if (useCompleteNotificationFormat) {
Timber.d("Updating invitation notification ${wrapper.meta.key}") Timber.d("Updating invitation notification ${wrapper.meta.key}")
notificationDisplayer.showNotificationMessage( notificationDisplayer.showNotificationMessage(
wrapper.meta.key, tag = wrapper.meta.key,
notificationIdProvider.getRoomInvitationNotificationId(sessionId), id = notificationIdProvider.getRoomInvitationNotificationId(currentUser.userId),
wrapper.notification notification = wrapper.notification
) )
} }
} }
@ -97,14 +104,17 @@ class NotificationRenderer @Inject constructor(
when (wrapper) { when (wrapper) {
is OneShotNotification.Removed -> { is OneShotNotification.Removed -> {
Timber.d("Removing simple notification ${wrapper.key}") Timber.d("Removing simple notification ${wrapper.key}")
notificationDisplayer.cancelNotificationMessage(wrapper.key, notificationIdProvider.getRoomEventNotificationId(sessionId)) notificationDisplayer.cancelNotificationMessage(
tag = wrapper.key,
id = notificationIdProvider.getRoomEventNotificationId(currentUser.userId)
)
} }
is OneShotNotification.Append -> if (useCompleteNotificationFormat) { is OneShotNotification.Append -> if (useCompleteNotificationFormat) {
Timber.d("Updating simple notification ${wrapper.meta.key}") Timber.d("Updating simple notification ${wrapper.meta.key}")
notificationDisplayer.showNotificationMessage( notificationDisplayer.showNotificationMessage(
wrapper.meta.key, tag = wrapper.meta.key,
notificationIdProvider.getRoomEventNotificationId(sessionId), id = notificationIdProvider.getRoomEventNotificationId(currentUser.userId),
wrapper.notification notification = wrapper.notification
) )
} }
} }
@ -114,9 +124,9 @@ class NotificationRenderer @Inject constructor(
if (summaryNotification is SummaryNotification.Update) { if (summaryNotification is SummaryNotification.Update) {
Timber.d("Updating summary notification") Timber.d("Updating summary notification")
notificationDisplayer.showNotificationMessage( notificationDisplayer.showNotificationMessage(
null, tag = null,
notificationIdProvider.getSummaryNotificationId(sessionId), id = notificationIdProvider.getSummaryNotificationId(currentUser.userId),
summaryNotification.notification notification = summaryNotification.notification
) )
} }
} }

View file

@ -20,7 +20,7 @@ import android.graphics.Bitmap
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.app.Person import androidx.core.app.Person
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.R
import io.element.android.libraries.push.impl.notifications.factories.NotificationFactory import io.element.android.libraries.push.impl.notifications.factories.NotificationFactory
import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent
@ -37,19 +37,17 @@ class RoomGroupMessageCreator @Inject constructor(
) { ) {
fun createRoomMessage( fun createRoomMessage(
sessionId: SessionId, currentUser: MatrixUser,
events: List<NotifiableMessageEvent>, events: List<NotifiableMessageEvent>,
roomId: RoomId, roomId: RoomId,
userDisplayName: String,
userAvatarUrl: String?
): RoomNotification.Message { ): RoomNotification.Message {
val lastKnownRoomEvent = events.last() val lastKnownRoomEvent = events.last()
val roomName = lastKnownRoomEvent.roomName ?: lastKnownRoomEvent.senderName ?: "Room name (${roomId.value.take(8)}…)" val roomName = lastKnownRoomEvent.roomName ?: lastKnownRoomEvent.senderName ?: "Room name (${roomId.value.take(8)}…)"
val roomIsGroup = !lastKnownRoomEvent.roomIsDirect val roomIsGroup = !lastKnownRoomEvent.roomIsDirect
val style = NotificationCompat.MessagingStyle( val style = NotificationCompat.MessagingStyle(
Person.Builder() Person.Builder()
.setName(userDisplayName) .setName(currentUser.displayName)
.setIcon(bitmapLoader.getUserIcon(userAvatarUrl)) .setIcon(bitmapLoader.getUserIcon(currentUser.avatarUrl))
.setKey(lastKnownRoomEvent.sessionId.value) .setKey(lastKnownRoomEvent.sessionId.value)
.build() .build()
).also { ).also {
@ -80,7 +78,7 @@ class RoomGroupMessageCreator @Inject constructor(
notificationFactory.createMessagesListNotification( notificationFactory.createMessagesListNotification(
style, style,
RoomEventGroupInfo( RoomEventGroupInfo(
sessionId = sessionId, sessionId = currentUser.userId,
roomId = roomId, roomId = roomId,
roomDisplayName = roomName, roomDisplayName = roomName,
isDirect = !roomIsGroup, isDirect = !roomIsGroup,

View file

@ -18,7 +18,7 @@ package io.element.android.libraries.push.impl.notifications
import android.app.Notification import android.app.Notification
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.R
import io.element.android.libraries.push.impl.notifications.factories.NotificationFactory import io.element.android.libraries.push.impl.notifications.factories.NotificationFactory
import io.element.android.services.toolbox.api.strings.StringProvider import io.element.android.services.toolbox.api.strings.StringProvider
@ -44,7 +44,7 @@ class SummaryGroupMessageCreator @Inject constructor(
) { ) {
fun createSummaryNotification( fun createSummaryNotification(
sessionId: SessionId, currentUser: MatrixUser,
roomNotifications: List<RoomNotification.Message.Meta>, roomNotifications: List<RoomNotification.Message.Meta>,
invitationNotifications: List<OneShotNotification.Append.Meta>, invitationNotifications: List<OneShotNotification.Append.Meta>,
simpleNotifications: List<OneShotNotification.Append.Meta>, simpleNotifications: List<OneShotNotification.Append.Meta>,
@ -74,7 +74,7 @@ class SummaryGroupMessageCreator @Inject constructor(
.setSummaryText(stringProvider.getQuantityString(R.plurals.notification_unread_notified_messages, nbEvents, nbEvents)) .setSummaryText(stringProvider.getQuantityString(R.plurals.notification_unread_notified_messages, nbEvents, nbEvents))
return if (useCompleteNotificationFormat) { return if (useCompleteNotificationFormat) {
notificationFactory.createSummaryListNotification( notificationFactory.createSummaryListNotification(
sessionId, currentUser,
summaryInboxStyle, summaryInboxStyle,
sumTitle, sumTitle,
noisy = summaryIsNoisy, noisy = summaryIsNoisy,
@ -82,7 +82,7 @@ class SummaryGroupMessageCreator @Inject constructor(
) )
} else { } else {
processSimpleGroupSummary( processSimpleGroupSummary(
sessionId, currentUser,
summaryIsNoisy, summaryIsNoisy,
messageCount, messageCount,
simpleNotifications.size, simpleNotifications.size,
@ -94,7 +94,7 @@ class SummaryGroupMessageCreator @Inject constructor(
} }
private fun processSimpleGroupSummary( private fun processSimpleGroupSummary(
sessionId: SessionId, currentUser: MatrixUser,
summaryIsNoisy: Boolean, summaryIsNoisy: Boolean,
messageEventsCount: Int, messageEventsCount: Int,
simpleEventsCount: Int, simpleEventsCount: Int,
@ -167,7 +167,7 @@ class SummaryGroupMessageCreator @Inject constructor(
} }
} }
return notificationFactory.createSummaryListNotification( return notificationFactory.createSummaryListNotification(
sessionId = sessionId, currentUser = currentUser,
style = null, style = null,
compatSummary = privacyTitle, compatSummary = privacyTitle,
noisy = summaryIsNoisy, noisy = summaryIsNoisy,

View file

@ -26,8 +26,8 @@ import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat import androidx.core.content.res.ResourcesCompat
import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.core.meta.BuildMeta
import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.di.ApplicationContext
import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.core.ThreadId
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.R
import io.element.android.libraries.push.impl.notifications.RoomEventGroupInfo import io.element.android.libraries.push.impl.notifications.RoomEventGroupInfo
import io.element.android.libraries.push.impl.notifications.channels.NotificationChannels import io.element.android.libraries.push.impl.notifications.channels.NotificationChannels
@ -226,7 +226,7 @@ class NotificationFactory @Inject constructor(
* Create the summary notification. * Create the summary notification.
*/ */
fun createSummaryListNotification( fun createSummaryListNotification(
sessionId: SessionId, currentUser: MatrixUser,
style: NotificationCompat.InboxStyle?, style: NotificationCompat.InboxStyle?,
compatSummary: String, compatSummary: String,
noisy: Boolean, noisy: Boolean,
@ -240,12 +240,12 @@ class NotificationFactory @Inject constructor(
// used in compat < N, after summary is built based on child notifications // used in compat < N, after summary is built based on child notifications
.setWhen(lastMessageTimestamp) .setWhen(lastMessageTimestamp)
.setStyle(style) .setStyle(style)
.setContentTitle(sessionId.value) .setContentTitle(currentUser.userId.value)
.setCategory(NotificationCompat.CATEGORY_MESSAGE) .setCategory(NotificationCompat.CATEGORY_MESSAGE)
.setSmallIcon(smallIcon) .setSmallIcon(smallIcon)
// set content text to support devices running API level < 24 // set content text to support devices running API level < 24
.setContentText(compatSummary) .setContentText(compatSummary)
.setGroup(sessionId.value) .setGroup(currentUser.userId.value)
// set this notification as the summary for the group // set this notification as the summary for the group
.setGroupSummary(true) .setGroupSummary(true)
.setColor(accentColor) .setColor(accentColor)
@ -264,8 +264,8 @@ class NotificationFactory @Inject constructor(
priority = NotificationCompat.PRIORITY_LOW priority = NotificationCompat.PRIORITY_LOW
} }
} }
.setContentIntent(pendingIntentFactory.createOpenSessionPendingIntent(sessionId)) .setContentIntent(pendingIntentFactory.createOpenSessionPendingIntent(currentUser.userId))
.setDeleteIntent(pendingIntentFactory.createDismissSummaryPendingIntent(sessionId)) .setDeleteIntent(pendingIntentFactory.createDismissSummaryPendingIntent(currentUser.userId))
.build() .build()
} }