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 -> {
|
is MessageDialog.MessageDelete -> {
|
||||||
val deleteForEveryone = bundle.getBoolean("everyone")
|
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(
|
deleteMessage(
|
||||||
messageIds = listOf(dialog.message.id),
|
messageIds = listOf(dialog.message.id),
|
||||||
deleteForAll = deleteForEveryone
|
deleteForAll = deleteForEveryone
|
||||||
|
|||||||
+10
-2
@@ -90,6 +90,7 @@ import dev.chrisbanes.haze.hazeEffect
|
|||||||
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
|
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
|
||||||
import dev.chrisbanes.haze.materials.HazeMaterials
|
import dev.chrisbanes.haze.materials.HazeMaterials
|
||||||
import dev.meloda.fast.common.extensions.orDots
|
import dev.meloda.fast.common.extensions.orDots
|
||||||
|
import dev.meloda.fast.data.UserConfig
|
||||||
import dev.meloda.fast.datastore.AppSettings
|
import dev.meloda.fast.datastore.AppSettings
|
||||||
import dev.meloda.fast.datastore.UserSettings
|
import dev.meloda.fast.datastore.UserSettings
|
||||||
import dev.meloda.fast.messageshistory.MessagesHistoryViewModel
|
import dev.meloda.fast.messageshistory.MessagesHistoryViewModel
|
||||||
@@ -336,11 +337,18 @@ fun MessageDeleteDialog(
|
|||||||
onDismissed: () -> Unit = {},
|
onDismissed: () -> Unit = {},
|
||||||
) {
|
) {
|
||||||
var forEveryone by remember {
|
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) {
|
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(
|
MaterialDialog(
|
||||||
|
|||||||
Reference in New Issue
Block a user