Use minimal replacement class for MessageModel

This commit is contained in:
Scott Nonnenberg
2025-01-10 08:18:32 +10:00
committed by GitHub
parent 6b00cf756e
commit f846678b90
95 changed files with 3919 additions and 4457 deletions

View File

@@ -35,6 +35,10 @@ import {
applyDeleteAttachmentFromMessage,
applyDeleteMessage,
} from './deleteForMe';
import { getMessageIdForLogging } from './idForLogging';
import { markViewOnceMessageViewed } from '../services/MessageUpdater';
import { handleReaction } from '../messageModifiers/Reactions';
import { postSaveUpdates } from './cleanup';
export enum ModifyTargetMessageResult {
Modified = 'Modified',
@@ -52,7 +56,7 @@ export async function modifyTargetMessage(
): Promise<ModifyTargetMessageResult> {
const { isFirstRun = false, skipEdits = false } = options ?? {};
const logId = `modifyTargetMessage/${message.idForLogging()}`;
const logId = `modifyTargetMessage/${getMessageIdForLogging(message.attributes)}`;
const type = message.get('type');
let changed = false;
const ourAci = window.textsecure.storage.user.getCheckedAci();
@@ -157,7 +161,7 @@ export async function modifyTargetMessage(
);
if (!isEqual(oldSendStateByConversationId, newSendStateByConversationId)) {
message.set('sendStateByConversationId', newSendStateByConversationId);
message.set({ sendStateByConversationId: newSendStateByConversationId });
changed = true;
}
}
@@ -184,10 +188,12 @@ export async function modifyTargetMessage(
const existingExpirationStartTimestamp = message.get(
'expirationStartTimestamp'
);
message.set(
'expirationStartTimestamp',
Math.min(existingExpirationStartTimestamp ?? Date.now(), markReadAt)
);
message.set({
expirationStartTimestamp: Math.min(
existingExpirationStartTimestamp ?? Date.now(),
markReadAt
),
});
changed = true;
}
@@ -208,8 +214,10 @@ export async function modifyTargetMessage(
});
changed = true;
message.setPendingMarkRead(
Math.min(message.getPendingMarkRead() ?? Date.now(), markReadAt)
// eslint-disable-next-line no-param-reassign
message.pendingMarkRead = Math.min(
message.pendingMarkRead ?? Date.now(),
markReadAt
);
} else if (
isFirstRun &&
@@ -219,9 +227,10 @@ export async function modifyTargetMessage(
conversation.setArchived(false);
}
if (!isFirstRun && message.getPendingMarkRead()) {
const markReadAt = message.getPendingMarkRead();
message.setPendingMarkRead(undefined);
if (!isFirstRun && message.pendingMarkRead) {
const markReadAt = message.pendingMarkRead;
// eslint-disable-next-line no-param-reassign
message.pendingMarkRead = undefined;
const newestSentAt = maybeSingleReadSync?.readSync.timestamp;
// This is primarily to allow the conversation to mark all older
@@ -232,9 +241,9 @@ export async function modifyTargetMessage(
// message and the other ones accompanying it in the batch are fully in
// the database.
drop(
message
.getConversation()
?.onReadMessage(message.attributes, markReadAt, newestSentAt)
window.ConversationController.get(
message.get('conversationId')
)?.onReadMessage(message.attributes, markReadAt, newestSentAt)
);
}
@@ -242,7 +251,7 @@ export async function modifyTargetMessage(
if (isTapToView(message.attributes)) {
const viewOnceOpenSync = ViewOnceOpenSyncs.forMessage(message.attributes);
if (viewOnceOpenSync) {
await message.markViewOnceMessageViewed({ fromSync: true });
await markViewOnceMessageViewed(message, { fromSync: true });
changed = true;
}
}
@@ -262,8 +271,10 @@ export async function modifyTargetMessage(
Date.now(),
...viewSyncs.map(({ viewSync }) => viewSync.viewedAt)
);
message.setPendingMarkRead(
Math.min(message.getPendingMarkRead() ?? Date.now(), markReadAt)
// eslint-disable-next-line no-param-reassign
message.pendingMarkRead = Math.min(
message.pendingMarkRead ?? Date.now(),
markReadAt
);
}
@@ -272,7 +283,7 @@ export async function modifyTargetMessage(
expirationStartTimestamp: message.get('timestamp'),
expireTimer: message.get('expireTimer'),
});
message.set('expirationStartTimestamp', message.get('timestamp'));
message.set({ expirationStartTimestamp: message.get('timestamp') });
changed = true;
}
}
@@ -292,12 +303,12 @@ export async function modifyTargetMessage(
generatedMessage,
'Story reactions must provide storyReactionMessage'
);
await generatedMessage.handleReaction(reaction, {
await handleReaction(generatedMessage, reaction, {
storyMessage: message.attributes,
});
} else {
changed = true;
await message.handleReaction(reaction, { shouldPersist: false });
await handleReaction(message, reaction, { shouldPersist: false });
}
})
);
@@ -317,6 +328,7 @@ export async function modifyTargetMessage(
log.info(`${logId}: Changes in second run; saving.`);
await DataWriter.saveMessage(message.attributes, {
ourAci,
postSaveUpdates,
});
}