From 6d50571ab4735417ac4b6213f8c107d785c0525a Mon Sep 17 00:00:00 2001 From: Infi Date: Wed, 5 Jun 2024 14:33:22 +0200 Subject: [PATCH] fix: show DM partner name in text field in DMs Signed-off-by: Infi --- .../java/chat/revolt/activities/ShareTargetActivity.kt | 6 +++--- .../main/java/chat/revolt/api/internals/ChannelUtils.kt | 8 +++++++- .../chat/revolt/components/screens/chat/ChannelHeader.kt | 2 +- .../revolt/screens/chat/views/channel/ChannelScreen.kt | 6 ++++-- app/src/main/java/chat/revolt/sheets/ChannelInfoSheet.kt | 2 +- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/chat/revolt/activities/ShareTargetActivity.kt b/app/src/main/java/chat/revolt/activities/ShareTargetActivity.kt index fcf16cc3..6bffa1fc 100644 --- a/app/src/main/java/chat/revolt/activities/ShareTargetActivity.kt +++ b/app/src/main/java/chat/revolt/activities/ShareTargetActivity.kt @@ -331,7 +331,7 @@ fun ShareTargetScreen( channelSearchContent, ignoreCase = true ) == true - || ChannelUtils.resolveDMName(it) + || ChannelUtils.resolveName(it) ?.contains( channelSearchContent, ignoreCase = true @@ -347,7 +347,7 @@ fun ShareTargetScreen( channel.channelType ?: ChannelType.TextChannel ), name = (if (channel.server != null) "${channel.name} (${RevoltAPI.serverCache[channel.server]?.name})" else channel.name) - ?: ChannelUtils.resolveDMName(channel) + ?: ChannelUtils.resolveName(channel) ?: stringResource(R.string.unknown), selected = selectedChannel == channel.id, hasUnread = false, @@ -357,7 +357,7 @@ fun ShareTargetScreen( dmPartnerIcon = ChannelUtils.resolveDMPartner( channel )?.let { u -> RevoltAPI.userCache[u] }?.avatar, - dmPartnerName = ChannelUtils.resolveDMName( + dmPartnerName = ChannelUtils.resolveName( channel ), dmPartnerStatus = ChannelUtils.resolveDMPartner( diff --git a/app/src/main/java/chat/revolt/api/internals/ChannelUtils.kt b/app/src/main/java/chat/revolt/api/internals/ChannelUtils.kt index c75ddd6f..0e59cacc 100644 --- a/app/src/main/java/chat/revolt/api/internals/ChannelUtils.kt +++ b/app/src/main/java/chat/revolt/api/internals/ChannelUtils.kt @@ -11,7 +11,13 @@ sealed class CategorisedChannelList { } object ChannelUtils { - fun resolveDMName(channel: Channel): String? { + /** + * Resolves the name of a channel, preferring the name of the channel itself, then the name of the first recipient. + * @param channel The channel to resolve the name of. + * @return The name of the channel, or the name of the first recipient if the channel is a DM. + * @see User.resolveDefaultName + */ + fun resolveName(channel: Channel): String? { return channel.name ?: RevoltAPI.userCache[channel.recipients?.first { u -> u != RevoltAPI.selfId }]?.let { User.resolveDefaultName( diff --git a/app/src/main/java/chat/revolt/components/screens/chat/ChannelHeader.kt b/app/src/main/java/chat/revolt/components/screens/chat/ChannelHeader.kt index 07706ac0..24f0e9eb 100644 --- a/app/src/main/java/chat/revolt/components/screens/chat/ChannelHeader.kt +++ b/app/src/main/java/chat/revolt/components/screens/chat/ChannelHeader.kt @@ -78,7 +78,7 @@ fun ChannelHeader( ) { Text( text = channel.name - ?: ChannelUtils.resolveDMName(channel) + ?: ChannelUtils.resolveName(channel) ?: if (channel.channelType == ChannelType.SavedMessages) { stringResource(R.string.channel_notes) } else { diff --git a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt index 769a8688..71c44a8e 100644 --- a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt +++ b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt @@ -432,7 +432,7 @@ fun ChannelScreen( ) ChannelType.DirectMessage -> Text( - ChannelUtils.resolveDMName(it) + ChannelUtils.resolveName(it) ?: stringResource(R.string.unknown), maxLines = 1, overflow = TextOverflow.Ellipsis @@ -785,7 +785,9 @@ fun ChannelScreen( onSendMessage = viewModel::sendPendingMessage, channelType = viewModel.channel?.channelType ?: ChannelType.TextChannel, - channelName = viewModel.channel?.name + channelName = viewModel.channel?.let { channel -> + ChannelUtils.resolveName(channel) + } ?: stringResource(R.string.unknown), onFocusChange = { isFocused -> if (isFocused && viewModel.activePane != ChannelScreenActivePane.None) { diff --git a/app/src/main/java/chat/revolt/sheets/ChannelInfoSheet.kt b/app/src/main/java/chat/revolt/sheets/ChannelInfoSheet.kt index 4f44c9bf..3dda9a20 100644 --- a/app/src/main/java/chat/revolt/sheets/ChannelInfoSheet.kt +++ b/app/src/main/java/chat/revolt/sheets/ChannelInfoSheet.kt @@ -109,7 +109,7 @@ fun ChannelInfoSheet(channelId: String, onHideSheet: suspend () -> Unit) { ) { ChannelSheetHeader( channelName = channel.name - ?: ChannelUtils.resolveDMName(channel) + ?: ChannelUtils.resolveName(channel) ?: stringResource(id = R.string.unknown), channelIcon = channel.icon, channelType = channel.channelType ?: ChannelType.TextChannel,