Migrate message ids to UUIDv7

This commit is contained in:
Fedor Indutny 2024-10-07 20:17:03 -07:00 committed by GitHub
parent c1b5811c39
commit 60d7cbff3e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 203 additions and 147 deletions

View file

@ -174,6 +174,7 @@ import { ReceiptType } from '../types/Receipt';
import { getQuoteAttachment } from '../util/makeQuote';
import { deriveProfileKeyVersion } from '../util/zkgroup';
import { incrementMessageCounter } from '../util/incrementMessageCounter';
import { generateMessageId } from '../util/generateMessageId';
import { getMessageAuthorText } from '../util/getMessageAuthorText';
import { downscaleOutgoingAttachment } from '../util/attachments';
import { MessageRequestResponseEvent } from '../types/MessageRequestResponseEvent';
@ -2328,11 +2329,10 @@ export class ConversationModel extends window.Backbone
: lastMessageTimestamp;
const message: MessageAttributesType = {
id: generateGuid(),
...generateMessageId(incrementMessageCounter()),
conversationId: this.id,
type: 'message-request-response-event',
sent_at: maybeLastMessageTimestamp,
received_at: incrementMessageCounter(),
received_at_ms: maybeLastMessageTimestamp,
readStatus: ReadStatus.Read,
seenStatus: SeenStatus.NotApplicable,
@ -3085,12 +3085,11 @@ export class ConversationModel extends window.Backbone
});
const message: MessageAttributesType = {
id: generateGuid(),
...generateMessageId(receivedAtCounter),
conversationId: this.id,
type: 'chat-session-refreshed',
timestamp: receivedAt,
sent_at: receivedAt,
received_at: receivedAtCounter,
received_at_ms: receivedAt,
readStatus: ReadStatus.Unread,
seenStatus: SeenStatus.Unseen,
@ -3133,12 +3132,11 @@ export class ConversationModel extends window.Backbone
}
const message: MessageAttributesType = {
id: generateGuid(),
...generateMessageId(receivedAtCounter),
conversationId: this.id,
type: 'delivery-issue',
sourceServiceId: senderAci,
sent_at: receivedAt,
received_at: receivedAtCounter,
received_at_ms: receivedAt,
timestamp: receivedAt,
readStatus: ReadStatus.Unread,
@ -3183,12 +3181,11 @@ export class ConversationModel extends window.Backbone
const timestamp = Date.now();
const message: MessageAttributesType = {
id: generateGuid(),
...generateMessageId(incrementMessageCounter()),
conversationId: this.id,
type: 'keychange',
sent_at: timestamp,
timestamp,
received_at: incrementMessageCounter(),
received_at_ms: timestamp,
key_changed: keyChangedId,
readStatus: ReadStatus.Read,
@ -3245,12 +3242,11 @@ export class ConversationModel extends window.Backbone
const timestamp = Date.now();
const message: MessageAttributesType = {
id: generateGuid(),
...generateMessageId(incrementMessageCounter()),
conversationId: this.id,
type: 'conversation-merge',
sent_at: timestamp,
timestamp,
received_at: incrementMessageCounter(),
received_at_ms: timestamp,
conversationMerge: {
renderInfo,
@ -3294,12 +3290,11 @@ export class ConversationModel extends window.Backbone
log.info(`${logId}: adding notification`);
const timestamp = Date.now();
const message: MessageAttributesType = {
id: generateGuid(),
...generateMessageId(incrementMessageCounter()),
conversationId: this.id,
type: 'phone-number-discovery',
sent_at: timestamp,
timestamp,
received_at: incrementMessageCounter(),
received_at_ms: timestamp,
phoneNumberDiscovery: {
e164,
@ -3343,12 +3338,11 @@ export class ConversationModel extends window.Backbone
const timestamp = Date.now();
const message: MessageAttributesType = {
id: generateGuid(),
...generateMessageId(incrementMessageCounter()),
conversationId: this.id,
local: Boolean(options.local),
readStatus: ReadStatus.Read,
received_at_ms: timestamp,
received_at: incrementMessageCounter(),
seenStatus: options.local ? SeenStatus.Seen : SeenStatus.Unseen,
sent_at: lastMessage,
timestamp,
@ -3388,11 +3382,10 @@ export class ConversationModel extends window.Backbone
): Promise<void> {
const now = Date.now();
const message: MessageAttributesType = {
id: generateGuid(),
...generateMessageId(incrementMessageCounter()),
conversationId: this.id,
type: 'profile-change',
sent_at: now,
received_at: incrementMessageCounter(),
received_at_ms: now,
readStatus: ReadStatus.Read,
seenStatus: SeenStatus.NotApplicable,
@ -3432,11 +3425,10 @@ export class ConversationModel extends window.Backbone
): Promise<string> {
const now = Date.now();
const message: MessageAttributesType = {
id: generateGuid(),
...generateMessageId(incrementMessageCounter()),
conversationId: this.id,
type,
sent_at: now,
received_at: incrementMessageCounter(),
received_at_ms: now,
timestamp: now,
@ -4102,7 +4094,7 @@ export class ConversationModel extends window.Backbone
// Here we move attachments to disk
const attributes = await upgradeMessageSchema({
id: generateGuid(),
...generateMessageId(incrementMessageCounter()),
timestamp: now,
type: 'outgoing',
body,
@ -4112,7 +4104,6 @@ export class ConversationModel extends window.Backbone
preview,
attachments: attachmentsToSend,
sent_at: now,
received_at: incrementMessageCounter(),
received_at_ms: now,
expirationStartTimestamp,
expireTimer,
@ -4734,9 +4725,9 @@ export class ConversationModel extends window.Backbone
const shouldBeRead =
(isInitialSync && isFromSyncOperation) || isFromMe || isNoteToSelf;
const id = generateGuid();
const counter = receivedAt ?? incrementMessageCounter();
const attributes = {
id,
...generateMessageId(counter),
conversationId: this.id,
expirationTimerUpdate: {
expireTimer,
@ -4747,7 +4738,6 @@ export class ConversationModel extends window.Backbone
flags: Proto.DataMessage.Flags.EXPIRATION_TIMER_UPDATE,
readStatus: shouldBeRead ? ReadStatus.Read : ReadStatus.Unread,
received_at_ms: receivedAtMS,
received_at: receivedAt ?? incrementMessageCounter(),
seenStatus: shouldBeRead ? SeenStatus.Seen : SeenStatus.Unseen,
sent_at: sentAt,
timestamp: sentAt,
@ -4760,7 +4750,7 @@ export class ConversationModel extends window.Backbone
});
window.MessageCache.__DEPRECATED$register(
id,
attributes.id,
attributes,
'updateExpirationTimer'
);