Use correct timestamp for receipts of edited messages
This commit is contained in:
parent
8fe0047822
commit
5869717cd3
21 changed files with 156 additions and 52 deletions
|
@ -389,7 +389,7 @@ export type FTSOptimizationStateType = Readonly<{
|
|||
}>;
|
||||
|
||||
export type EditedMessageType = Readonly<{
|
||||
fromId: string;
|
||||
conversationId: string;
|
||||
messageId: string;
|
||||
sentAt: number;
|
||||
readStatus: MessageType['readStatus'];
|
||||
|
@ -523,7 +523,7 @@ export type DataInterface = {
|
|||
storyId?: string;
|
||||
}) => Promise<GetUnreadByConversationAndMarkReadResultType>;
|
||||
getUnreadEditedMessagesAndMarkRead: (options: {
|
||||
fromId: string;
|
||||
conversationId: string;
|
||||
newestUnreadAt: number;
|
||||
}) => Promise<GetUnreadByConversationAndMarkReadResultType>;
|
||||
getUnreadReactionsAndMarkRead: (options: {
|
||||
|
|
|
@ -5630,7 +5630,7 @@ async function removeAllProfileKeyCredentials(): Promise<void> {
|
|||
async function saveEditedMessage(
|
||||
mainMessage: MessageType,
|
||||
ourUuid: UUIDStringType,
|
||||
{ fromId, messageId, readStatus, sentAt }: EditedMessageType
|
||||
{ conversationId, messageId, readStatus, sentAt }: EditedMessageType
|
||||
): Promise<void> {
|
||||
const db = getInstance();
|
||||
|
||||
|
@ -5644,12 +5644,12 @@ async function saveEditedMessage(
|
|||
|
||||
const [query, params] = sql`
|
||||
INSERT INTO edited_messages (
|
||||
fromId,
|
||||
conversationId,
|
||||
messageId,
|
||||
sentAt,
|
||||
readStatus
|
||||
) VALUES (
|
||||
${fromId},
|
||||
${conversationId},
|
||||
${messageId},
|
||||
${sentAt},
|
||||
${readStatus}
|
||||
|
@ -5675,10 +5675,10 @@ async function _getAllEditedMessages(): Promise<
|
|||
}
|
||||
|
||||
async function getUnreadEditedMessagesAndMarkRead({
|
||||
fromId,
|
||||
conversationId,
|
||||
newestUnreadAt,
|
||||
}: {
|
||||
fromId: string;
|
||||
conversationId: string;
|
||||
newestUnreadAt: number;
|
||||
}): Promise<GetUnreadByConversationAndMarkReadResultType> {
|
||||
const db = getInstance();
|
||||
|
@ -5695,7 +5695,7 @@ async function getUnreadEditedMessagesAndMarkRead({
|
|||
ON messages.id = edited_messages.messageId
|
||||
WHERE
|
||||
edited_messages.readStatus = ${ReadStatus.Unread} AND
|
||||
edited_messages.fromId = ${fromId} AND
|
||||
edited_messages.conversationId = ${conversationId} AND
|
||||
received_at <= ${newestUnreadAt}
|
||||
ORDER BY messages.received_at DESC, messages.sent_at DESC;
|
||||
`;
|
||||
|
@ -5711,7 +5711,7 @@ async function getUnreadEditedMessagesAndMarkRead({
|
|||
readStatus = ${ReadStatus.Read}
|
||||
WHERE
|
||||
readStatus = ${ReadStatus.Unread} AND
|
||||
fromId = ${fromId} AND
|
||||
conversationId = ${conversationId} AND
|
||||
sentAt <= ${newestSentAt};
|
||||
`;
|
||||
|
||||
|
|
29
ts/sql/migrations/82-edited-messages-read-index.ts
Normal file
29
ts/sql/migrations/82-edited-messages-read-index.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
// Copyright 2023 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { Database } from '@signalapp/better-sqlite3';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion82(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 82) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
db.exec(`
|
||||
ALTER TABLE edited_messages DROP COLUMN fromId;
|
||||
ALTER TABLE edited_messages ADD COLUMN conversationId STRING;
|
||||
|
||||
CREATE INDEX edited_messages_unread ON edited_messages (readStatus, conversationId);
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 82');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion82: success!');
|
||||
}
|
|
@ -57,6 +57,7 @@ import updateToSchemaVersion78 from './78-merge-receipt-jobs';
|
|||
import updateToSchemaVersion79 from './79-paging-lightbox';
|
||||
import updateToSchemaVersion80 from './80-edited-messages';
|
||||
import updateToSchemaVersion81 from './81-contact-removed-notification';
|
||||
import updateToSchemaVersion82 from './82-edited-messages-read-index';
|
||||
|
||||
function updateToSchemaVersion1(
|
||||
currentVersion: number,
|
||||
|
@ -1984,6 +1985,7 @@ export const SCHEMA_VERSIONS = [
|
|||
|
||||
updateToSchemaVersion80,
|
||||
updateToSchemaVersion81,
|
||||
updateToSchemaVersion82,
|
||||
];
|
||||
|
||||
export function updateSchema(db: Database, logger: LoggerType): void {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue