diff --git a/app/src/main/java/chat/revolt/sheets/UserInfoSheet.kt b/app/src/main/java/chat/revolt/sheets/UserInfoSheet.kt index 5fa6aae5..8f39e0ce 100644 --- a/app/src/main/java/chat/revolt/sheets/UserInfoSheet.kt +++ b/app/src/main/java/chat/revolt/sheets/UserInfoSheet.kt @@ -3,10 +3,12 @@ package chat.revolt.sheets import android.text.format.DateUtils import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.staggeredgrid.LazyVerticalStaggeredGrid import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridCells import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridItemSpan @@ -23,6 +25,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Brush import androidx.compose.ui.res.painterResource @@ -41,6 +44,7 @@ import chat.revolt.components.chat.RoleListEntry import chat.revolt.components.chat.UserBadgeList import chat.revolt.components.chat.UserBadgeRow import chat.revolt.components.generic.NonIdealState +import chat.revolt.components.generic.UserAvatar import chat.revolt.components.markdown.RichMarkdown import chat.revolt.components.screens.settings.RawUserOverview import chat.revolt.components.screens.settings.UserButtons @@ -241,6 +245,72 @@ fun UserInfoSheet( } } + if (user.bot != null) { + val resolvedOwner = user.bot.owner?.let { RevoltAPI.userCache[it] } + + item(key = "bot-owner") { + SheetTile( + header = { + Text(stringResource(R.string.user_info_sheet_category_owner)) + }, + contentPreview = { + Row( + verticalAlignment = Alignment.CenterVertically + ) { + resolvedOwner?.let { + UserAvatar( + username = it.displayName ?: it.username + ?: stringResource(R.string.unknown), + avatar = it.avatar, + userId = it.id!!, + size = 32.dp + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + text = it.displayName ?: it.username + ?: stringResource(R.string.unknown), + fontSize = 14.sp, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + } ?: run { + Icon( + painter = painterResource(id = R.drawable.ic_alert_decagram_24dp), + contentDescription = null + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + text = stringResource(R.string.unknown), + fontSize = 14.sp, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + } + } + } + ) { + resolvedOwner?.let { + RawUserOverview(it, null, internalPadding = false) + } ?: run { + NonIdealState( + icon = { + Icon( + painter = painterResource(R.drawable.ic_alert_decagram_24dp), + contentDescription = null, + modifier = Modifier.size(24.dp) + ) + }, + title = { + Text( + text = stringResource(R.string.user_info_sheet_owner_not_found) + ) + } + ) + } + } + } + } + if (profile?.content.isNullOrBlank().not()) { item(key = "bio", span = StaggeredGridItemSpan.FullLine) { SheetTile( diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index adbd1fd1..816e42e8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -313,7 +313,8 @@ Joined Revolt Badges - Bot + Owner + Could not fetch owner information Add Friend Send Message Remove Friend