feat: use checkForExpireUpdateInContentMessage on sync messages

pull/2971/head
William Grant 2 years ago
parent 617bcc670b
commit a65f02a807

@ -90,12 +90,10 @@ import {
import { ReactionList } from '../types/Reaction';
import { roomHasBlindEnabled } from '../types/sqlSharedTypes';
import {
DisappearingMessageMode,
DisappearingMessageType,
DisappearingMessageUpdate,
ExpirationTimerOptions,
setExpirationStartTimestamp,
changeToDisappearingMessageConversationType,
checkForExpireUpdateInContentMessage,
} from '../util/expiringMessages';
import { LinkPreviews } from '../util/linkPreviews';
import { Notifications } from '../util/notifications';
@ -1025,40 +1023,16 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
throw new Error('Cannot trigger syncMessage with unknown convo.');
}
// TODO legacy messages support will be removed in a future release
const isLegacyDisappearingDataMessage = Boolean(
(dataMessage.expireTimer && dataMessage.expireTimer > -1) ||
(!content.expirationTimer &&
dataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE)
);
const expirationTimer = isLegacyDisappearingDataMessage
? Number(dataMessage.expireTimer)
: content.expirationTimer;
const expirationType: DisappearingMessageType =
DisappearingMessageMode[content.expirationType];
const lastDisappearingMessageChangeTimestamp = content.lastDisappearingMessageChangeTimestamp
? Number(content.lastDisappearingMessageChangeTimestamp)
: undefined;
let expireUpdate: DisappearingMessageUpdate | null = null;
if (expirationType && expirationTimer !== undefined) {
expireUpdate = {
expirationType,
expirationTimer,
lastDisappearingMessageChangeTimestamp,
};
}
const expireUpdate = await checkForExpireUpdateInContentMessage(content, conversation);
const syncMessage = buildSyncMessage(
this.id,
dataMessage as SignalService.DataMessage,
conversation.id,
sentTimestamp,
expireUpdate || undefined
expireUpdate
);
await getMessageQueue().sendSyncMessage({
namespace: SnodeNamespaces.UserMessages,
message: syncMessage,

@ -1,5 +1,5 @@
import { v4 as uuidv4 } from 'uuid';
import _, { isEmpty } from 'lodash';
import _ from 'lodash';
import { UserUtils } from '..';
import { getMessageQueue } from '../..';
import { Data } from '../../../data/data';
@ -370,7 +370,7 @@ export const buildSyncMessage = (
data: DataMessage | SignalService.DataMessage,
syncTarget: string,
sentTimestamp: number,
expireUpdate?: DisappearingMessageUpdate
expireUpdate: DisappearingMessageUpdate
): VisibleMessage | ExpirationTimerUpdateMessage => {
if (
(data as any).constructor.name !== 'DataMessage' &&
@ -387,7 +387,7 @@ export const buildSyncMessage = (
// don't include our profileKey on syncing message. This is to be done by a ConfigurationMessage now
const timestamp = _.toNumber(sentTimestamp);
if (dataMessage.flags === SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE) {
if (expireUpdate && !isEmpty(expireUpdate)) {
if (expireUpdate.lastDisappearingMessageChangeTimestamp) {
return buildSyncExpireTimerMessage(identifier, expireUpdate, timestamp, syncTarget);
}
window.log.warn('WIP: Building Sync Expire Timer Message failed', dataMessage, expireUpdate);

Loading…
Cancel
Save