From 8e3b674d9066d37ed9673cfa36bcdad0b5b2ff8d Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Wed, 10 Jan 2024 15:48:13 +1300 Subject: [PATCH] Forget messages/events upon deletion (may fix #18) --- d2m/actions/delete-message.js | 3 ++- m2d/actions/redact.js | 2 ++ m2d/actions/send-event.js | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/d2m/actions/delete-message.js b/d2m/actions/delete-message.js index 30c31d4..f893e6d 100644 --- a/d2m/actions/delete-message.js +++ b/d2m/actions/delete-message.js @@ -13,10 +13,11 @@ async function deleteMessage(data) { if (!roomID) return const eventsToRedact = select("event_message", "event_id", {message_id: data.id}).pluck().all() + db.prepare("DELETE FROM message_channel WHERE message_id = ?").run(data.id) + db.prepare("DELETE FROM event_message WHERE message_id = ?").run(data.id) for (const eventID of eventsToRedact) { // Unfortunately, we can't specify a sender to do the redaction as, unless we find out that info via the audit logs await api.redactEvent(roomID, eventID) - db.prepare("DELETE FROM event_message WHERE event_id = ?").run(eventID) } } diff --git a/m2d/actions/redact.js b/m2d/actions/redact.js index 316b466..26a7142 100644 --- a/m2d/actions/redact.js +++ b/m2d/actions/redact.js @@ -13,7 +13,9 @@ const utils = sync.require("../converters/utils") */ async function deleteMessage(event) { const rows = from("event_message").join("message_channel", "message_id").select("channel_id", "message_id").where({event_id: event.redacts}).all() + db.prepare("DELETE FROM event_message WHERE event_id = ?").run(event.event_id) for (const row of rows) { + db.prepare("DELETE FROM message_channel WHERE message_id = ?").run(row.message_id) discord.snow.channel.deleteMessage(row.channel_id, row.message_id, event.content.reason) } } diff --git a/m2d/actions/send-event.js b/m2d/actions/send-event.js index 1b60ffe..6b7d3b8 100644 --- a/m2d/actions/send-event.js +++ b/m2d/actions/send-event.js @@ -96,6 +96,8 @@ async function sendEvent(event) { } for (const id of messagesToDelete) { + db.prepare("DELETE FROM message_channel WHERE message_id = ?").run(id) + db.prepare("DELETE FROM event_message WHERE message_id = ?").run(id) await channelWebhook.deleteMessageWithWebhook(channelID, id, threadID) }