fix: expiration update to off expire with previous expiration settings

pull/2940/head
Audric Ackermann 1 year ago
parent b2d22b2a73
commit 5fc234ee16

@ -8,7 +8,6 @@ import { SessionIcon } from '../icon/SessionIcon';
const ExpireTimerBucket = styled.div`
font-size: var(--font-size-xs);
line-height: 16px;
letter-spacing: 0.3px;
text-transform: uppercase;
user-select: none;

@ -72,7 +72,7 @@ const MessageStatusContainer = styled.div<{ isIncoming: boolean }>`
margin-inline-start: 5px;
cursor: pointer;
display: flex;
align-items: baseline;
align-items: center;
`;
const StyledStatusText = styled.div`

@ -856,9 +856,12 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
return false;
}
const previousExpirationMode = this.getExpirationMode();
const previousExpirationTimer = this.getExpireTimer();
if (
isEqual(expirationMode, this.getExpirationMode()) &&
isEqual(expireTimer, this.getExpireTimer())
isEqual(expirationMode, previousExpirationMode) &&
isEqual(expireTimer, previousExpirationTimer)
) {
window.log.debug(
`[updateExpireTimer] Ignoring ExpireTimerUpdate ${
@ -898,6 +901,11 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
expirationMode
);
// For some reasons, we want a timer update to "off" to disappear with the previous setting on that conversation...
const shouldUsePreviousExpiration =
expirationType === 'unknown' &&
previousExpirationMode !== 'off' &&
previousExpirationMode !== 'legacy';
const commonAttributes = {
flags: SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE,
expirationTimerUpdate: {
@ -927,6 +935,11 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
received_at: timestamp,
});
}
} else {
message.set({
expirationType: shouldUsePreviousExpiration ? previousExpirationMode : expirationType,
expireTimer: shouldUsePreviousExpiration ? previousExpirationTimer : expireTimer,
});
}
if (this.isActive()) {

@ -459,9 +459,7 @@ function getMessageReadyToDisappear(
if (conversationModel.isPublic()) {
throw Error(
`getMessageReadyToDisappear() Disappearing messages aren't supported in communities. Message id: ${messageModel.get(
'id'
)}`
`getMessageReadyToDisappear() Disappearing messages aren't supported in communities`
);
}
@ -480,6 +478,20 @@ function getMessageReadyToDisappear(
// This message is an ExpirationTimerUpdate
if (lastDisappearingMessageChangeTimestamp || isLegacyConversationSettingMessage) {
const previousExpirationMode = conversationModel.getExpirationMode();
const previousExpirationTimer = conversationModel.getExpireTimer();
const shouldUsePreviousExpiration =
expirationType === 'unknown' &&
previousExpirationMode !== 'off' &&
previousExpirationMode !== 'legacy';
if (shouldUsePreviousExpiration) {
messageModel.set({
expirationType: previousExpirationMode,
expireTimer: previousExpirationTimer,
});
}
const expirationTimerUpdate = {
expirationType,
expireTimer,

Loading…
Cancel
Save