fix: duplicate timer update messages

pull/2660/head
William Grant 2 years ago
parent 97ecc9e521
commit 42356b0d60

@ -12,10 +12,13 @@ export const TimerNotification = (props: PropsForExpirationTimer) => {
const { const {
messageId, messageId,
receivedAt, receivedAt,
direction,
isUnread, isUnread,
pubkey, pubkey,
profileName, profileName,
expirationType, expirationType,
expirationLength,
expirationTimestamp,
timespan, timespan,
type, type,
disabled, disabled,
@ -52,11 +55,11 @@ export const TimerNotification = (props: PropsForExpirationTimer) => {
<ExpirableReadableMessage <ExpirableReadableMessage
convoId={props.convoId} convoId={props.convoId}
messageId={messageId} messageId={messageId}
direction={props.direction} direction={direction}
receivedAt={receivedAt} receivedAt={receivedAt}
isUnread={isUnread} isUnread={isUnread}
expirationLength={props.expirationLength} expirationLength={expirationLength}
expirationTimestamp={props.expirationTimestamp} expirationTimestamp={expirationTimestamp}
isExpired={props.isExpired} isExpired={props.isExpired}
key={`readable-message-${messageId}`} key={`readable-message-${messageId}`}
> >

@ -90,11 +90,11 @@ export const ExpirableReadableMessage = (props: ExpirableReadableMessageProps) =
const expiringProps: PropsForExpiringMessage = { const expiringProps: PropsForExpiringMessage = {
convoId, convoId,
messageId: messageId, messageId,
expirationLength, expirationLength,
expirationTimestamp, expirationTimestamp,
isExpired: props.isExpired, isExpired: props.isExpired,
direction: props.direction, direction,
}; };
const { isExpired } = useIsExpired(expiringProps); const { isExpired } = useIsExpired(expiringProps);
const isIncoming = direction === 'incoming'; const isIncoming = direction === 'incoming';

@ -1141,6 +1141,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
// tell the UI this conversation was updated // tell the UI this conversation was updated
await this.commit(); await this.commit();
} }
// if change was made remotely, don't send it to the number/group // if change was made remotely, don't send it to the number/group
if (receivedAt) { if (receivedAt) {
return; return;

@ -303,6 +303,7 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
if (!this.isExpirationTimerUpdate()) { if (!this.isExpirationTimerUpdate()) {
return null; return null;
} }
const timerUpdate = this.get('expirationTimerUpdate'); const timerUpdate = this.get('expirationTimerUpdate');
if (!timerUpdate || !timerUpdate.source) { if (!timerUpdate || !timerUpdate.source) {
return null; return null;
@ -1198,11 +1199,7 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
public markReadNoCommit(readAt: number) { public markReadNoCommit(readAt: number) {
this.set({ unread: 0 }); this.set({ unread: 0 });
if ( if (this.get('expirationType') === 'deleteAfterRead' && this.get('expireTimer')) {
this.get('expirationType') === 'deleteAfterRead' &&
this.get('expireTimer') &&
Boolean(this.get('expirationStartTimestamp')) === false
) {
this.set({ this.set({
expirationStartTimestamp: setExpirationStartTimestamp('deleteAfterRead', readAt), expirationStartTimestamp: setExpirationStartTimestamp('deleteAfterRead', readAt),
}); });

@ -165,6 +165,12 @@ function handleMentions(
function updateReadStatus(message: MessageModel) { function updateReadStatus(message: MessageModel) {
if (message.isExpirationTimerUpdate()) { if (message.isExpirationTimerUpdate()) {
message.set({ unread: 0 }); message.set({ unread: 0 });
if (message.get('expirationType') === 'deleteAfterRead' && message.get('expireTimer')) {
message.set({
expirationStartTimestamp: setExpirationStartTimestamp('deleteAfterRead'),
});
}
} }
} }
@ -311,10 +317,6 @@ async function handleExpirationTimerUpdateNoCommit(
expireTimer: number, expireTimer: number,
lastDisappearingMessageChangeTimestamp: number lastDisappearingMessageChangeTimestamp: number
) { ) {
message.set({
unread: 0, // mark the message as read.
});
await conversation.updateExpireTimer({ await conversation.updateExpireTimer({
providedExpirationType: expirationType, providedExpirationType: expirationType,
providedExpireTimer: expireTimer, providedExpireTimer: expireTimer,

Loading…
Cancel
Save