feat: tested new expiration modes with legacy and new clients

fixed banner logic
pull/2660/head
William Grant 3 years ago
parent 93cb972514
commit 2f4c0114aa

@ -1227,6 +1227,7 @@ function updateToSessionSchemaVersion30(currentVersion: number, db: BetterSqlite
// TODO update to agreed value between platforms // TODO update to agreed value between platforms
const disappearingMessagesV2ReleaseTimestamp = 1677488400000; // unix 27/02/2023 09:00 const disappearingMessagesV2ReleaseTimestamp = 1677488400000; // unix 27/02/2023 09:00
// const disappearingMessagesV2ReleaseTimestamp = 1677661200000; // unix 01/03/2023 09:00
// support disppearing messages legacy mode until after the platform agreed timestamp // support disppearing messages legacy mode until after the platform agreed timestamp
if (Date.now() < disappearingMessagesV2ReleaseTimestamp) { if (Date.now() < disappearingMessagesV2ReleaseTimestamp) {
@ -1245,7 +1246,7 @@ function updateToSessionSchemaVersion30(currentVersion: number, db: BetterSqlite
db.prepare( db.prepare(
`UPDATE ${CONVERSATIONS_TABLE} SET `UPDATE ${CONVERSATIONS_TABLE} SET
expirationType = $expirationType expirationType = $expirationType
WHERE (type = 'group' AND is_medium_group = true) AND expireTimer > 0;` WHERE type = 'group' AND is_medium_group = 1 AND expireTimer > 0;`
).run({ expirationType: 'deleteAfterSend' }); ).run({ expirationType: 'deleteAfterSend' });
} }

@ -416,10 +416,14 @@ export async function innerHandleSwarmContentMessage(
const isDisappearingMessagesV2Released = await checkIsFeatureReleased( const isDisappearingMessagesV2Released = await checkIsFeatureReleased(
'Disappearing Messages V2' 'Disappearing Messages V2'
); );
const isLegacyConversationSettingMessage = Boolean(
!content.expirationTimer &&
dataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE
);
const isLegacyMessage = Boolean( const isLegacyMessage = Boolean(
(dataMessage.expireTimer && dataMessage.expireTimer > -1) || (!content.expirationTimer && dataMessage.expireTimer && dataMessage.expireTimer > -1) ||
(!content.expirationTimer && isLegacyConversationSettingMessage
dataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE)
); );
const expireTimer = isDisappearingMessagesV2Released const expireTimer = isDisappearingMessagesV2Released
@ -440,28 +444,37 @@ export async function innerHandleSwarmContentMessage(
expirationType, expirationType,
expireTimer, expireTimer,
lastDisappearingMessageChangeTimestamp, lastDisappearingMessageChangeTimestamp,
isLegacyConversationSettingMessage,
isLegacyMessage, isLegacyMessage,
isDisappearingMessagesV2Released, isDisappearingMessagesV2Released,
}; };
if (isLegacyMessage) { const outdatedSender =
// trigger notice banner senderConversationModel.get('nickname') ||
const outdatedSender = senderConversationModel.get('displayNameInProfile') ||
senderConversationModel.get('nickname') || senderConversationModel.get('id');
senderConversationModel.get('displayNameInProfile') ||
senderConversationModel.get('id');
if (conversationModelForUIUpdate.get('hasOutdatedClient')) { if (conversationModelForUIUpdate.get('hasOutdatedClient')) {
// trigger notice banner
if (isLegacyMessage) {
if (conversationModelForUIUpdate.get('hasOutdatedClient') !== outdatedSender) {
conversationModelForUIUpdate.set({
hasOutdatedClient: outdatedSender,
});
}
} else {
conversationModelForUIUpdate.set({ conversationModelForUIUpdate.set({
hasOutdatedClient: hasOutdatedClient: undefined,
conversationModelForUIUpdate.get('hasOutdatedClient') === outdatedSender
? outdatedSender
: undefined,
}); });
} else {
conversationModelForUIUpdate.set({ hasOutdatedClient: outdatedSender });
} }
conversationModelForUIUpdate.commit(); conversationModelForUIUpdate.commit();
} else {
if (isLegacyMessage) {
conversationModelForUIUpdate.set({
hasOutdatedClient: outdatedSender,
});
conversationModelForUIUpdate.commit();
}
} }
await handleSwarmDataMessage( await handleSwarmDataMessage(

@ -251,6 +251,7 @@ export async function handleSwarmDataMessage(
expirationType, expirationType,
expireTimer, expireTimer,
lastDisappearingMessageChangeTimestamp, lastDisappearingMessageChangeTimestamp,
isLegacyConversationSettingMessage,
isLegacyMessage, isLegacyMessage,
isDisappearingMessagesV2Released, isDisappearingMessagesV2Released,
} = expireUpdate; } = expireUpdate;
@ -270,12 +271,8 @@ export async function handleSwarmDataMessage(
// TODO legacy messages support will be removed in a future release // TODO legacy messages support will be removed in a future release
// This message is conversation setting change message // This message is conversation setting change message
if ( if (lastDisappearingMessageChangeTimestamp || isLegacyConversationSettingMessage) {
lastDisappearingMessageChangeTimestamp || if (isDisappearingMessagesV2Released && isLegacyConversationSettingMessage) {
(isLegacyMessage &&
rawDataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE)
) {
if (isDisappearingMessagesV2Released) {
window.log.info(`WIP: The legacy message is an expiration timer update. Ignoring it.`); window.log.info(`WIP: The legacy message is an expiration timer update. Ignoring it.`);
return; return;
} }
@ -283,7 +280,7 @@ export async function handleSwarmDataMessage(
const expirationTimerUpdate = { const expirationTimerUpdate = {
expirationType, expirationType,
expireTimer, expireTimer,
lastDisappearingMessageChangeTimestamp: isLegacyMessage lastDisappearingMessageChangeTimestamp: isLegacyConversationSettingMessage
? isDisappearingMessagesV2Released ? isDisappearingMessagesV2Released
? convoToAddMessageTo.get('lastDisappearingMessageChangeTimestamp') ? convoToAddMessageTo.get('lastDisappearingMessageChangeTimestamp')
: Date.now() : Date.now()

@ -26,6 +26,7 @@ export type DisappearingMessageUpdate = {
expireTimer: number; expireTimer: number;
// This is used for the expirationTimerUpdate // This is used for the expirationTimerUpdate
lastDisappearingMessageChangeTimestamp?: number; lastDisappearingMessageChangeTimestamp?: number;
isLegacyConversationSettingMessage?: boolean;
isLegacyMessage?: boolean; isLegacyMessage?: boolean;
isDisappearingMessagesV2Released?: boolean; isDisappearingMessagesV2Released?: boolean;
}; };

Loading…
Cancel
Save