feat: user sheet placeholder

Signed-off-by: Infi <wingit@geist.ga>
This commit is contained in:
Infi 2023-06-15 23:50:31 +02:00
parent 8b7c36337b
commit 72ea2d538e
4 changed files with 34 additions and 4 deletions

View File

@ -128,6 +128,7 @@ fun Message(
truncate: Boolean = false,
parse: (MessageSchema) -> SpannableStringBuilder = { SpannableStringBuilder(it.content) },
onMessageContextMenu: () -> Unit = {},
onAvatarClick: () -> Unit = {},
canReply: Boolean = false,
onReply: () -> Unit = {},
) {
@ -198,7 +199,8 @@ fun Message(
username = User.resolveDefaultName(author),
userId = author.id ?: message.id ?: ULID.makeSpecial(0),
avatar = author.avatar,
rawUrl = message.masquerade?.avatar?.let { asJanuaryProxyUrl(it) }
rawUrl = message.masquerade?.avatar?.let { asJanuaryProxyUrl(it) },
onClick = onAvatarClick,
)
}
} else {

View File

@ -107,6 +107,7 @@ fun UserAvatar(
url = "$REVOLT_BASE/users/${userId}/default_avatar",
description = stringResource(id = R.string.avatar_alt, username),
modifier = Modifier
.clip(CircleShape)
.size(size)
.then(
if (onLongClick != null || onClick != null) Modifier
@ -115,8 +116,7 @@ fun UserAvatar(
onLongClick = { onLongClick?.invoke() }
)
else Modifier
)
.clip(CircleShape),
),
)
}

View File

@ -190,6 +190,9 @@ fun ChatRouterScreen(topNav: NavController, viewModel: ChatRouterViewModel = hil
var showServerContextSheet by remember { mutableStateOf(false) }
var serverContextSheetTarget by remember { mutableStateOf("") }
var showUserContextSheet by remember { mutableStateOf(false) }
var userContextSheetTarget by remember { mutableStateOf("") }
BackHandler(enabled = drawerState.isClosed) {
scope.launch {
drawerState.open()
@ -323,6 +326,21 @@ fun ChatRouterScreen(topNav: NavController, viewModel: ChatRouterViewModel = hil
}
}
if (showUserContextSheet) {
val userContextSheetState = rememberModalBottomSheetState()
ModalBottomSheet(
sheetState = userContextSheetState,
onDismissRequest = {
showUserContextSheet = false
},
) {
Column {
Text(text = "this is user context sheet for $userContextSheetTarget")
}
}
}
Column(
modifier = Modifier
.fillMaxWidth()
@ -473,7 +491,11 @@ fun ChatRouterScreen(topNav: NavController, viewModel: ChatRouterViewModel = hil
if (drawerState.isOpen) drawerState.close()
else drawerState.open()
}
}
},
onUserSheetOpenFor = { target ->
userContextSheetTarget = target
showUserContextSheet = true
},
)
}
}

View File

@ -86,6 +86,7 @@ fun ChannelScreen(
navController: NavController,
channelId: String,
onToggleDrawer: () -> Unit,
onUserSheetOpenFor: (String) -> Unit,
viewModel: ChannelScreenViewModel = viewModel()
) {
val channel = viewModel.activeChannel
@ -282,6 +283,11 @@ fun ChannelScreen(
messageContextSheetShown = true
messageContextSheetTarget = message.id ?: ""
},
onAvatarClick = {
message.author?.let { author ->
onUserSheetOpenFor(author)
}
},
canReply = true,
onReply = {
if (viewModel.pendingReplies.size >= 5) {