Delete Sync: Handle and send mostRecentNonExpiringMessages if needed

This commit is contained in:
Scott Nonnenberg 2024-06-24 10:49:36 -07:00 committed by GitHub
parent 9c0ea4d6ec
commit 08da49a0aa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 356 additions and 46 deletions

View file

@ -372,6 +372,7 @@ const dataInterface: ServerInterface = {
saveEditedMessage,
saveEditedMessages,
getMostRecentAddressableMessages,
getMostRecentAddressableNondisappearingMessages,
removeSyncTaskById,
saveSyncTasks,
@ -2119,6 +2120,39 @@ export function getMostRecentAddressableMessagesSync(
return rows.map(row => jsonToObject(row.json));
}
async function getMostRecentAddressableNondisappearingMessages(
conversationId: string,
limit = 5
): Promise<Array<MessageType>> {
const db = getReadonlyInstance();
return getMostRecentAddressableNondisappearingMessagesSync(
db,
conversationId,
limit
);
}
export function getMostRecentAddressableNondisappearingMessagesSync(
db: Database,
conversationId: string,
limit = 5
): Array<MessageType> {
const [query, parameters] = sql`
SELECT json FROM messages
INDEXED BY messages_by_date_addressable_nondisappearing
WHERE
expireTimer IS NULL AND
conversationId IS ${conversationId} AND
isAddressableMessage = 1
ORDER BY received_at DESC, sent_at DESC
LIMIT ${limit};
`;
const rows = db.prepare(query).all(parameters);
return rows.map(row => jsonToObject(row.json));
}
async function removeSyncTaskById(id: string): Promise<void> {
const db = await getWritableInstance();
removeSyncTaskByIdSync(db, id);