Make admins see the delete button

Signed-off-by: denis0001-dev <denis0001.dev@ya.ru>
This commit is contained in:
2026-07-17 00:09:57 +03:00
Unverified
parent c53befe4b9
commit a715b7796f
2 changed files with 21 additions and 4 deletions
@@ -750,9 +750,19 @@ fun ChatScreen(
return@LaunchedEffect return@LaunchedEffect
} }
val liveAuthor = liveMessage.user_id == currentUserId val liveAuthor = liveMessage.user_id == currentUserId
val liveFp = messageContextMenuFingerprint(liveMessage, liveAuthor, isReadOnly) val liveFp = messageContextMenuFingerprint(
liveMessage,
liveAuthor,
liveAuthor || currentUserId == 1,
isReadOnly,
)
val menuAuthor = menuMessage.user_id == currentUserId val menuAuthor = menuMessage.user_id == currentUserId
val menuFp = messageContextMenuFingerprint(menuMessage, menuAuthor, isReadOnly) val menuFp = messageContextMenuFingerprint(
menuMessage,
menuAuthor,
menuAuthor || currentUserId == 1,
isReadOnly,
)
if (menuFp != liveFp || liveMessage.id != menuMessage.id) { if (menuFp != liveFp || liveMessage.id != menuMessage.id) {
contextMenuState = contextMenuState.copy(message = liveMessage) contextMenuState = contextMenuState.copy(message = liveMessage)
} }
@@ -1482,6 +1492,8 @@ fun ChatScreen(
MessageContextMenu( MessageContextMenu(
state = contextMenuState, state = contextMenuState,
isAuthor = contextMenuState.message?.user_id == currentUserId, isAuthor = contextMenuState.message?.user_id == currentUserId,
canDelete = contextMenuState.message?.user_id == currentUserId ||
currentUserId == 1,
isReadOnly = isReadOnly, isReadOnly = isReadOnly,
screenWidthPx = screenWidthPx, screenWidthPx = screenWidthPx,
screenHeightPx = screenHeightPx, screenHeightPx = screenHeightPx,
@@ -75,6 +75,7 @@ data class ContextMenuState(
internal fun messageContextMenuFingerprint( internal fun messageContextMenuFingerprint(
message: Message, message: Message,
isAuthor: Boolean, isAuthor: Boolean,
canDelete: Boolean,
isReadOnly: Boolean, isReadOnly: Boolean,
): String { ): String {
val isQueued = message.isQueuedOutbound() && isAuthor val isQueued = message.isQueuedOutbound() && isAuthor
@@ -88,7 +89,7 @@ internal fun messageContextMenuFingerprint(
if (!isQueued && !isReadOnly) { if (!isQueued && !isReadOnly) {
append("|reply=1") append("|reply=1")
append("|edit=").append(isAuthor && !corrupted) append("|edit=").append(isAuthor && !corrupted)
append("|del=").append(isAuthor) append("|del=").append(canDelete)
} }
} }
} }
@@ -97,6 +98,7 @@ internal fun messageContextMenuFingerprint(
fun MessageContextMenu( fun MessageContextMenu(
state: ContextMenuState, state: ContextMenuState,
isAuthor: Boolean, isAuthor: Boolean,
canDelete: Boolean = isAuthor,
onDismiss: () -> Unit, onDismiss: () -> Unit,
onReply: (Message) -> Unit, onReply: (Message) -> Unit,
onEdit: (Message) -> Unit, onEdit: (Message) -> Unit,
@@ -161,6 +163,7 @@ fun MessageContextMenu(
ContextMenuContent( ContextMenuContent(
message = state.message, message = state.message,
isAuthor = isAuthor, isAuthor = isAuthor,
canDelete = canDelete,
onReply = {}, onReply = {},
onEdit = {}, onEdit = {},
onDelete = {}, onDelete = {},
@@ -242,6 +245,7 @@ fun MessageContextMenu(
ContextMenuContent( ContextMenuContent(
message = state.message, message = state.message,
isAuthor = isAuthor, isAuthor = isAuthor,
canDelete = canDelete,
onReply = { onReply = {
onReply(it) onReply(it)
onDismiss() onDismiss()
@@ -287,6 +291,7 @@ fun MessageContextMenu(
private fun ContextMenuContent( private fun ContextMenuContent(
message: Message, message: Message,
isAuthor: Boolean, isAuthor: Boolean,
canDelete: Boolean,
onReply: (Message) -> Unit, onReply: (Message) -> Unit,
onEdit: (Message) -> Unit, onEdit: (Message) -> Unit,
onDelete: (Message) -> Unit, onDelete: (Message) -> Unit,
@@ -402,7 +407,7 @@ private fun ContextMenuContent(
onClick = { onEdit(message) } onClick = { onEdit(message) }
) )
} }
if (isAuthor) { if (canDelete) {
ContextMenuItem( ContextMenuItem(
icon = Icons.Rounded.Delete, icon = Icons.Rounded.Delete,
text = labelDelete, text = labelDelete,