fix: issue where messages don't get deleted

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2024-01-06 18:21:42 +01:00
parent f9b778e3c4
commit 1e6ded84ed
2 changed files with 26 additions and 0 deletions

View File

@ -13,6 +13,7 @@ import chat.revolt.api.realtime.frames.receivable.ChannelStartTypingFrame
import chat.revolt.api.realtime.frames.receivable.ChannelStopTypingFrame
import chat.revolt.api.realtime.frames.receivable.ChannelUpdateFrame
import chat.revolt.api.realtime.frames.receivable.MessageAppendFrame
import chat.revolt.api.realtime.frames.receivable.MessageDeleteFrame
import chat.revolt.api.realtime.frames.receivable.MessageFrame
import chat.revolt.api.realtime.frames.receivable.MessageReactFrame
import chat.revolt.api.realtime.frames.receivable.MessageUpdateFrame
@ -256,6 +257,27 @@ object RealtimeSocket {
RevoltAPI.wsFrameChannel.send(messageUpdateFrame)
}
"MessageDelete" -> {
val messageDeleteFrame =
RevoltJson.decodeFromString(MessageDeleteFrame.serializer(), rawFrame)
Log.d(
"RealtimeSocket",
"Received message react frame for ${messageDeleteFrame.id}."
)
val message = RevoltAPI.messageCache[messageDeleteFrame.id]
if (message == null) {
Log.d(
"RealtimeSocket",
"Message ${messageDeleteFrame.id} not found in cache. Will not delete."
)
return
}
RevoltAPI.messageCache.remove(messageDeleteFrame.id)
RevoltAPI.wsFrameChannel.send(messageDeleteFrame)
}
"MessageReact" -> {
val messageReactFrame =
RevoltJson.decodeFromString(MessageReactFrame.serializer(), rawFrame)

View File

@ -403,6 +403,10 @@ class ChannelScreenViewModel : ViewModel() {
val newRenderableMessages = renderableMessages.filter { currentMsg ->
currentMsg.id != it.id
}
renderableMessages.clear()
renderableMessages.addAll(newRenderableMessages)
regroupMessages(newRenderableMessages)
}