Fix 'Conversation label cannot be empty' error (#6823)

This happens when building a `ShortcutInfoCompat` in `DefaultNotificationConversationService.onSendMessage` when the provided room name is not null but it's empty.
This commit is contained in:
Jorge Martin Espinosa 2026-05-20 14:26:44 +02:00 committed by GitHub
parent 69773af445
commit 3593ca36d9
4 changed files with 7 additions and 6 deletions

View file

@ -571,7 +571,7 @@ class MessageComposerPresenter(
notificationConversationService.onSendMessage( notificationConversationService.onSendMessage(
sessionId = room.sessionId, sessionId = room.sessionId,
roomId = roomInfo.id, roomId = roomInfo.id,
roomName = roomInfo.name ?: roomInfo.id.value, roomName = roomInfo.name,
roomIsDirect = roomInfo.isDm, roomIsDirect = roomInfo.isDm,
roomAvatarUrl = roomInfo.avatarUrl ?: roomMembers.getDirectRoomMember(roomInfo = roomInfo, sessionId = room.sessionId)?.avatarUrl, roomAvatarUrl = roomInfo.avatarUrl ?: roomMembers.getDirectRoomMember(roomInfo = roomInfo, sessionId = room.sessionId)?.avatarUrl,
) )

View file

@ -22,7 +22,7 @@ interface NotificationConversationService {
suspend fun onSendMessage( suspend fun onSendMessage(
sessionId: SessionId, sessionId: SessionId,
roomId: RoomId, roomId: RoomId,
roomName: String, roomName: String?,
roomIsDirect: Boolean, roomIsDirect: Boolean,
roomAvatarUrl: String?, roomAvatarUrl: String?,
) )

View file

@ -76,7 +76,7 @@ class DefaultNotificationConversationService(
override suspend fun onSendMessage( override suspend fun onSendMessage(
sessionId: SessionId, sessionId: SessionId,
roomId: RoomId, roomId: RoomId,
roomName: String, roomName: String?,
roomIsDirect: Boolean, roomIsDirect: Boolean,
roomAvatarUrl: String?, roomAvatarUrl: String?,
) { ) {
@ -93,10 +93,11 @@ class DefaultNotificationConversationService(
val imageLoader = imageLoaderHolder.get(client) val imageLoader = imageLoaderHolder.get(client)
val defaultShortcutIconSize = ShortcutManagerCompat.getIconMaxWidth(context) val defaultShortcutIconSize = ShortcutManagerCompat.getIconMaxWidth(context)
val name = roomName?.takeIf { it.isNotBlank() } ?: roomId.value
val icon = bitmapLoader.getRoomBitmap( val icon = bitmapLoader.getRoomBitmap(
avatarData = AvatarData( avatarData = AvatarData(
id = roomId.value, id = roomId.value,
name = roomName, name = name,
url = roomAvatarUrl, url = roomAvatarUrl,
size = AvatarSize.RoomDetailsHeader, size = AvatarSize.RoomDetailsHeader,
), ),
@ -105,7 +106,7 @@ class DefaultNotificationConversationService(
)?.let(IconCompat::createWithBitmap) )?.let(IconCompat::createWithBitmap)
val shortcutInfo = ShortcutInfoCompat.Builder(context, createShortcutId(sessionId, roomId)) val shortcutInfo = ShortcutInfoCompat.Builder(context, createShortcutId(sessionId, roomId))
.setShortLabel(roomName) .setShortLabel(name)
.setIcon(icon) .setIcon(icon)
.setIntent(intentProvider.getViewRoomIntent(sessionId, roomId, threadId = null, eventId = null)) .setIntent(intentProvider.getViewRoomIntent(sessionId, roomId, threadId = null, eventId = null))
.setCategories(categories) .setCategories(categories)

View file

@ -16,7 +16,7 @@ class FakeNotificationConversationService : NotificationConversationService {
override suspend fun onSendMessage( override suspend fun onSendMessage(
sessionId: SessionId, sessionId: SessionId,
roomId: RoomId, roomId: RoomId,
roomName: String, roomName: String?,
roomIsDirect: Boolean, roomIsDirect: Boolean,
roomAvatarUrl: String?, roomAvatarUrl: String?,
) = Unit ) = Unit