Edit message import/export

This commit is contained in:
Fedor Indutny 2024-06-03 10:02:25 -07:00 committed by GitHub
parent d47b46500e
commit fa1530debf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 562 additions and 158 deletions

View file

@ -369,6 +369,7 @@ const dataInterface: ServerInterface = {
getMessagesBetween,
getNearbyMessageFromDeletedSet,
saveEditedMessage,
saveEditedMessages,
getMostRecentAddressableMessages,
removeSyncTaskById,
@ -2450,15 +2451,17 @@ async function saveMessage(
async function saveMessages(
arrayOfMessages: ReadonlyArray<MessageType>,
options: { forceSave?: boolean; ourAci: AciString }
): Promise<void> {
): Promise<Array<string>> {
const db = await getWritableInstance();
db.transaction(() => {
return db.transaction(() => {
const result = new Array<string>();
for (const message of arrayOfMessages) {
assertSync(
result.push(
saveMessageSync(db, message, { ...options, alreadyInTransaction: true })
);
}
return result;
})();
}
@ -7165,10 +7168,10 @@ async function removeAllProfileKeyCredentials(): Promise<void> {
);
}
async function saveEditedMessage(
async function saveEditedMessagesSync(
mainMessage: MessageType,
ourAci: AciString,
{ conversationId, messageId, readStatus, sentAt }: EditedMessageType
history: ReadonlyArray<EditedMessageType>
): Promise<void> {
const db = await getWritableInstance();
@ -7180,24 +7183,42 @@ async function saveEditedMessage(
})
);
const [query, params] = sql`
INSERT INTO edited_messages (
conversationId,
messageId,
sentAt,
readStatus
) VALUES (
${conversationId},
${messageId},
${sentAt},
${readStatus}
);
`;
for (const { conversationId, messageId, readStatus, sentAt } of history) {
const [query, params] = sql`
INSERT INTO edited_messages (
conversationId,
messageId,
sentAt,
readStatus
) VALUES (
${conversationId},
${messageId},
${sentAt},
${readStatus}
);
`;
db.prepare(query).run(params);
db.prepare(query).run(params);
}
})();
}
async function saveEditedMessage(
mainMessage: MessageType,
ourAci: AciString,
editedMessage: EditedMessageType
): Promise<void> {
return saveEditedMessagesSync(mainMessage, ourAci, [editedMessage]);
}
async function saveEditedMessages(
mainMessage: MessageType,
ourAci: AciString,
editedMessages: ReadonlyArray<EditedMessageType>
): Promise<void> {
return saveEditedMessagesSync(mainMessage, ourAci, editedMessages);
}
async function _getAllEditedMessages(): Promise<
Array<{ messageId: string; sentAt: number }>
> {