mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-04-24 18:38:15 +01:00
Use minimal replacement class for MessageModel
This commit is contained in:
@@ -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,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user