Fix deleting unsent messages and disable "for everyone" delete option

This commit is contained in:
2025-03-29 03:00:50 +03:00
parent f02822a011
commit 988da07852
2 changed files with 19 additions and 2 deletions
@@ -158,6 +158,15 @@ class MessagesHistoryViewModelImpl(
is MessageDialog.MessageDelete -> {
val deleteForEveryone = bundle.getBoolean("everyone")
if (dialog.message.id <= 0) {
val newMessages = messages.value.toMutableList()
newMessages.remove(dialog.message)
messages.setValue { newMessages }
syncUiMessages()
return
}
deleteMessage(
messageIds = listOf(dialog.message.id),
deleteForAll = deleteForEveryone
@@ -90,6 +90,7 @@ import dev.chrisbanes.haze.hazeEffect
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
import dev.chrisbanes.haze.materials.HazeMaterials
import dev.meloda.fast.common.extensions.orDots
import dev.meloda.fast.data.UserConfig
import dev.meloda.fast.datastore.AppSettings
import dev.meloda.fast.datastore.UserSettings
import dev.meloda.fast.messageshistory.MessagesHistoryViewModel
@@ -336,11 +337,18 @@ fun MessageDeleteDialog(
onDismissed: () -> Unit = {},
) {
var forEveryone by remember {
mutableStateOf(messages.all(VkMessage::isOut))
mutableStateOf(
!messages.any { it.peerId == UserConfig.userId }
&& messages.all(VkMessage::isOut)
)
}
val shouldBeDisabled by remember(messages) {
mutableStateOf(messages.any(VkMessage::isFailed) || !messages.all(VkMessage::isOut))
mutableStateOf(
messages.any { it.peerId == UserConfig.userId }
|| messages.all(VkMessage::isFailed)
|| !messages.all(VkMessage::isOut)
)
}
MaterialDialog(