feat: tested new expiration modes with legacy and new clients

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

@ -1227,6 +1227,7 @@ function updateToSessionSchemaVersion30(currentVersion: number, db: BetterSqlite
// TODO update to agreed value between platforms
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
if (Date.now() < disappearingMessagesV2ReleaseTimestamp) {
@ -1245,7 +1246,7 @@ function updateToSessionSchemaVersion30(currentVersion: number, db: BetterSqlite
db.prepare(
`UPDATE ${CONVERSATIONS_TABLE} SET
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' });
}

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

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

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

Loading…
Cancel
Save