diff --git a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/MessagesHistoryViewModel.kt b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/MessagesHistoryViewModel.kt index 3b95d6d7..34a2fdaa 100644 --- a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/MessagesHistoryViewModel.kt +++ b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/MessagesHistoryViewModel.kt @@ -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 diff --git a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/MessagesHistoryScreen.kt b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/MessagesHistoryScreen.kt index 9d5c9fff..9bebbf5d 100644 --- a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/MessagesHistoryScreen.kt +++ b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/MessagesHistoryScreen.kt @@ -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(