|
|
|
@ -196,39 +196,6 @@ async function copyFromQuotedMessage(
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Handle expiration timer as part of a regular message
|
|
|
|
|
async function handleExpireTimer(
|
|
|
|
|
source: string,
|
|
|
|
|
message: MessageModel,
|
|
|
|
|
expireTimer: number,
|
|
|
|
|
conversation: ConversationModel
|
|
|
|
|
) {
|
|
|
|
|
const oldValue = conversation.get('expireTimer');
|
|
|
|
|
|
|
|
|
|
if (expireTimer) {
|
|
|
|
|
message.set({ expireTimer });
|
|
|
|
|
|
|
|
|
|
if (expireTimer !== oldValue) {
|
|
|
|
|
await conversation.updateExpirationTimer(
|
|
|
|
|
expireTimer,
|
|
|
|
|
source,
|
|
|
|
|
message.get('sent_at') || message.get('received_at'),
|
|
|
|
|
{
|
|
|
|
|
fromGroupUpdate: message.isGroupUpdate(), // WHAT DOES GROUP UPDATE HAVE TO DO WITH THIS???
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
} else if (oldValue && !message.isGroupUpdate()) {
|
|
|
|
|
// We only turn off timers if it's not a group update
|
|
|
|
|
await conversation.updateExpirationTimer(
|
|
|
|
|
null,
|
|
|
|
|
source,
|
|
|
|
|
message.get('received_at'),
|
|
|
|
|
{}
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleLinkPreviews(
|
|
|
|
|
messageBody: string,
|
|
|
|
|
messagePreview: any,
|
|
|
|
@ -363,7 +330,7 @@ async function handleRegularMessage(
|
|
|
|
|
// `upgradeMessageSchema` only seems to add `schemaVersion: 10` to the message
|
|
|
|
|
const dataMessage = await upgradeMessageSchema(initialMessage);
|
|
|
|
|
|
|
|
|
|
const now = new Date().getTime();
|
|
|
|
|
const now = Date.now();
|
|
|
|
|
|
|
|
|
|
// Medium groups might have `group` set even if with group chat messages...
|
|
|
|
|
if (dataMessage.group && !conversation.isMediumGroup()) {
|
|
|
|
@ -383,6 +350,7 @@ async function handleRegularMessage(
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
handleLinkPreviews(dataMessage.body, dataMessage.preview, message);
|
|
|
|
|
const existingExpireTimer = conversation.get('expireTimer');
|
|
|
|
|
|
|
|
|
|
message.set({
|
|
|
|
|
flags: dataMessage.flags,
|
|
|
|
@ -399,15 +367,14 @@ async function handleRegularMessage(
|
|
|
|
|
errors: [],
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
conversation.set({ active_at: now });
|
|
|
|
|
if (existingExpireTimer) {
|
|
|
|
|
message.set({ expireTimer: existingExpireTimer });
|
|
|
|
|
message.set({ expirationStartTimestamp: now });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Handle expireTimer found directly as part of a regular message
|
|
|
|
|
await handleExpireTimer(
|
|
|
|
|
source,
|
|
|
|
|
message,
|
|
|
|
|
dataMessage.expireTimer,
|
|
|
|
|
conversation
|
|
|
|
|
);
|
|
|
|
|
conversation.set({ active_at: now });
|
|
|
|
|
// Expire timer updates are now explicit.
|
|
|
|
|
// We don't handle an expire timer from a incoming message except if it is an ExpireTimerUpdate message.
|
|
|
|
|
|
|
|
|
|
const ourPubKey = PubKey.cast(ourNumber);
|
|
|
|
|
|
|
|
|
@ -478,10 +445,7 @@ async function handleExpirationTimerUpdate(
|
|
|
|
|
await conversation.updateExpirationTimer(
|
|
|
|
|
expireTimer,
|
|
|
|
|
source,
|
|
|
|
|
message.get('received_at'),
|
|
|
|
|
{
|
|
|
|
|
fromGroupUpdate: message.isGroupUpdate(), // WHAT DOES GROUP UPDATE HAVE TO DO WITH THIS???
|
|
|
|
|
}
|
|
|
|
|
message.get('received_at')
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|