diff --git a/keyserver/src/creators/thread-creator.js b/keyserver/src/creators/thread-creator.js --- a/keyserver/src/creators/thread-creator.js +++ b/keyserver/src/creators/thread-creator.js @@ -33,7 +33,10 @@ } from './role-creator.js'; import type { UpdatesForCurrentSession } from './update-creator.js'; import { dbQuery, SQL } from '../database/database.js'; -import { fetchMessageInfoByID } from '../fetchers/message-fetchers.js'; +import { + fetchLatestEditMessageContentByID, + fetchMessageInfoByID, +} from '../fetchers/message-fetchers.js'; import { determineThreadAncestry, personalThreadQuery, @@ -443,6 +446,24 @@ }, }, ); + // Add latest edit message of sourceMessage to the sidebar + if (sourceMessageID) { + const editMessageContent = await fetchLatestEditMessageContentByID( + sourceMessageID, + ); + if (editMessageContent) { + const editedText = editMessageContent.text; + const messageData = { + type: messageTypes.EDIT_MESSAGE, + threadID: id, + creatorID: sourceMessage.creatorID, + time: time, + targetMessageID: sourceMessageID, + text: editedText, + }; + messageDatas.push(messageData); + } + } } if ( diff --git a/keyserver/src/fetchers/message-fetchers.js b/keyserver/src/fetchers/message-fetchers.js --- a/keyserver/src/fetchers/message-fetchers.js +++ b/keyserver/src/fetchers/message-fetchers.js @@ -721,6 +721,23 @@ return result[0].count; } +async function fetchLatestEditMessageContentByID( + messageID: string, +): Promise { + const latestEditedMessageQuery = SQL` + SELECT m.content FROM messages m + WHERE (m.target_message = ${messageID}) + AND (type = ${messageTypes.EDIT_MESSAGE}) + ORDER BY id DESC LIMIT 1; + `; + const [editedContent] = await dbQuery(latestEditedMessageQuery); + if (editedContent.length === 0) { + return null; + } + const jsonContent = JSON.parse(editedContent[0].content); + return jsonContent; +} + export { fetchCollapsableNotifs, fetchMessageInfos, @@ -730,4 +747,5 @@ fetchMessageInfoForEntryAction, fetchMessageInfoByID, fetchThreadMessagesCount, + fetchLatestEditMessageContentByID, };