feat: user sheet placeholder
Signed-off-by: Infi <wingit@geist.ga>
This commit is contained in:
parent
8b7c36337b
commit
72ea2d538e
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue