forked from melod1n/fast-messenger
Fix deleting unsent messages and disable "for everyone" delete option
This commit is contained in:
+9
@@ -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
|
||||
|
||||
+10
-2
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user