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,
|
truncate: Boolean = false,
|
||||||
parse: (MessageSchema) -> SpannableStringBuilder = { SpannableStringBuilder(it.content) },
|
parse: (MessageSchema) -> SpannableStringBuilder = { SpannableStringBuilder(it.content) },
|
||||||
onMessageContextMenu: () -> Unit = {},
|
onMessageContextMenu: () -> Unit = {},
|
||||||
|
onAvatarClick: () -> Unit = {},
|
||||||
canReply: Boolean = false,
|
canReply: Boolean = false,
|
||||||
onReply: () -> Unit = {},
|
onReply: () -> Unit = {},
|
||||||
) {
|
) {
|
||||||
|
|
@ -198,7 +199,8 @@ fun Message(
|
||||||
username = User.resolveDefaultName(author),
|
username = User.resolveDefaultName(author),
|
||||||
userId = author.id ?: message.id ?: ULID.makeSpecial(0),
|
userId = author.id ?: message.id ?: ULID.makeSpecial(0),
|
||||||
avatar = author.avatar,
|
avatar = author.avatar,
|
||||||
rawUrl = message.masquerade?.avatar?.let { asJanuaryProxyUrl(it) }
|
rawUrl = message.masquerade?.avatar?.let { asJanuaryProxyUrl(it) },
|
||||||
|
onClick = onAvatarClick,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,7 @@ fun UserAvatar(
|
||||||
url = "$REVOLT_BASE/users/${userId}/default_avatar",
|
url = "$REVOLT_BASE/users/${userId}/default_avatar",
|
||||||
description = stringResource(id = R.string.avatar_alt, username),
|
description = stringResource(id = R.string.avatar_alt, username),
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
.clip(CircleShape)
|
||||||
.size(size)
|
.size(size)
|
||||||
.then(
|
.then(
|
||||||
if (onLongClick != null || onClick != null) Modifier
|
if (onLongClick != null || onClick != null) Modifier
|
||||||
|
|
@ -115,8 +116,7 @@ fun UserAvatar(
|
||||||
onLongClick = { onLongClick?.invoke() }
|
onLongClick = { onLongClick?.invoke() }
|
||||||
)
|
)
|
||||||
else Modifier
|
else Modifier
|
||||||
)
|
),
|
||||||
.clip(CircleShape),
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -190,6 +190,9 @@ fun ChatRouterScreen(topNav: NavController, viewModel: ChatRouterViewModel = hil
|
||||||
var showServerContextSheet by remember { mutableStateOf(false) }
|
var showServerContextSheet by remember { mutableStateOf(false) }
|
||||||
var serverContextSheetTarget by remember { mutableStateOf("") }
|
var serverContextSheetTarget by remember { mutableStateOf("") }
|
||||||
|
|
||||||
|
var showUserContextSheet by remember { mutableStateOf(false) }
|
||||||
|
var userContextSheetTarget by remember { mutableStateOf("") }
|
||||||
|
|
||||||
BackHandler(enabled = drawerState.isClosed) {
|
BackHandler(enabled = drawerState.isClosed) {
|
||||||
scope.launch {
|
scope.launch {
|
||||||
drawerState.open()
|
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(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
|
|
@ -473,7 +491,11 @@ fun ChatRouterScreen(topNav: NavController, viewModel: ChatRouterViewModel = hil
|
||||||
if (drawerState.isOpen) drawerState.close()
|
if (drawerState.isOpen) drawerState.close()
|
||||||
else drawerState.open()
|
else drawerState.open()
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
onUserSheetOpenFor = { target ->
|
||||||
|
userContextSheetTarget = target
|
||||||
|
showUserContextSheet = true
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,7 @@ fun ChannelScreen(
|
||||||
navController: NavController,
|
navController: NavController,
|
||||||
channelId: String,
|
channelId: String,
|
||||||
onToggleDrawer: () -> Unit,
|
onToggleDrawer: () -> Unit,
|
||||||
|
onUserSheetOpenFor: (String) -> Unit,
|
||||||
viewModel: ChannelScreenViewModel = viewModel()
|
viewModel: ChannelScreenViewModel = viewModel()
|
||||||
) {
|
) {
|
||||||
val channel = viewModel.activeChannel
|
val channel = viewModel.activeChannel
|
||||||
|
|
@ -282,6 +283,11 @@ fun ChannelScreen(
|
||||||
messageContextSheetShown = true
|
messageContextSheetShown = true
|
||||||
messageContextSheetTarget = message.id ?: ""
|
messageContextSheetTarget = message.id ?: ""
|
||||||
},
|
},
|
||||||
|
onAvatarClick = {
|
||||||
|
message.author?.let { author ->
|
||||||
|
onUserSheetOpenFor(author)
|
||||||
|
}
|
||||||
|
},
|
||||||
canReply = true,
|
canReply = true,
|
||||||
onReply = {
|
onReply = {
|
||||||
if (viewModel.pendingReplies.size >= 5) {
|
if (viewModel.pendingReplies.size >= 5) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue