fix: show DM partner name in text field in DMs

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2024-06-05 14:33:22 +02:00
parent bff633f001
commit 6d50571ab4
5 changed files with 16 additions and 8 deletions

View File

@ -331,7 +331,7 @@ fun ShareTargetScreen(
channelSearchContent, channelSearchContent,
ignoreCase = true ignoreCase = true
) == true ) == true
|| ChannelUtils.resolveDMName(it) || ChannelUtils.resolveName(it)
?.contains( ?.contains(
channelSearchContent, channelSearchContent,
ignoreCase = true ignoreCase = true
@ -347,7 +347,7 @@ fun ShareTargetScreen(
channel.channelType ?: ChannelType.TextChannel channel.channelType ?: ChannelType.TextChannel
), ),
name = (if (channel.server != null) "${channel.name} (${RevoltAPI.serverCache[channel.server]?.name})" else channel.name) 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), ?: stringResource(R.string.unknown),
selected = selectedChannel == channel.id, selected = selectedChannel == channel.id,
hasUnread = false, hasUnread = false,
@ -357,7 +357,7 @@ fun ShareTargetScreen(
dmPartnerIcon = ChannelUtils.resolveDMPartner( dmPartnerIcon = ChannelUtils.resolveDMPartner(
channel channel
)?.let { u -> RevoltAPI.userCache[u] }?.avatar, )?.let { u -> RevoltAPI.userCache[u] }?.avatar,
dmPartnerName = ChannelUtils.resolveDMName( dmPartnerName = ChannelUtils.resolveName(
channel channel
), ),
dmPartnerStatus = ChannelUtils.resolveDMPartner( dmPartnerStatus = ChannelUtils.resolveDMPartner(

View File

@ -11,7 +11,13 @@ sealed class CategorisedChannelList {
} }
object ChannelUtils { 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 return channel.name
?: RevoltAPI.userCache[channel.recipients?.first { u -> u != RevoltAPI.selfId }]?.let { ?: RevoltAPI.userCache[channel.recipients?.first { u -> u != RevoltAPI.selfId }]?.let {
User.resolveDefaultName( User.resolveDefaultName(

View File

@ -78,7 +78,7 @@ fun ChannelHeader(
) { ) {
Text( Text(
text = channel.name text = channel.name
?: ChannelUtils.resolveDMName(channel) ?: ChannelUtils.resolveName(channel)
?: if (channel.channelType == ChannelType.SavedMessages) { ?: if (channel.channelType == ChannelType.SavedMessages) {
stringResource(R.string.channel_notes) stringResource(R.string.channel_notes)
} else { } else {

View File

@ -432,7 +432,7 @@ fun ChannelScreen(
) )
ChannelType.DirectMessage -> Text( ChannelType.DirectMessage -> Text(
ChannelUtils.resolveDMName(it) ChannelUtils.resolveName(it)
?: stringResource(R.string.unknown), ?: stringResource(R.string.unknown),
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
@ -785,7 +785,9 @@ fun ChannelScreen(
onSendMessage = viewModel::sendPendingMessage, onSendMessage = viewModel::sendPendingMessage,
channelType = viewModel.channel?.channelType channelType = viewModel.channel?.channelType
?: ChannelType.TextChannel, ?: ChannelType.TextChannel,
channelName = viewModel.channel?.name channelName = viewModel.channel?.let { channel ->
ChannelUtils.resolveName(channel)
}
?: stringResource(R.string.unknown), ?: stringResource(R.string.unknown),
onFocusChange = { isFocused -> onFocusChange = { isFocused ->
if (isFocused && viewModel.activePane != ChannelScreenActivePane.None) { if (isFocused && viewModel.activePane != ChannelScreenActivePane.None) {

View File

@ -109,7 +109,7 @@ fun ChannelInfoSheet(channelId: String, onHideSheet: suspend () -> Unit) {
) { ) {
ChannelSheetHeader( ChannelSheetHeader(
channelName = channel.name channelName = channel.name
?: ChannelUtils.resolveDMName(channel) ?: ChannelUtils.resolveName(channel)
?: stringResource(id = R.string.unknown), ?: stringResource(id = R.string.unknown),
channelIcon = channel.icon, channelIcon = channel.icon,
channelType = channel.channelType ?: ChannelType.TextChannel, channelType = channel.channelType ?: ChannelType.TextChannel,