feat: legacy mode now works for 1-1 chats

pull/2660/head
William Grant 2 years ago
parent 03bc6706f6
commit 8117e631d0

@ -635,13 +635,15 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
if (this.isPrivate()) {
if (this.isMe()) {
if (!this.isDisappearingMode('deleteAfterSend')) {
return;
if (this.isDisappearingMode) {
// TODO legacy messages support will be removed in a future release
if (!this.isDisappearingMode('legacy') || !this.isDisappearingMode('deleteAfterSend')) {
return;
}
}
chatMessageParams.syncTarget = this.id;
const chatMessageMe = new VisibleMessage(chatMessageParams);
// TODO handle sync messages for disappearing messages here
await getMessageQueue().sendSyncMessage(chatMessageMe);
return;
}
@ -680,6 +682,11 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
expireTimer: chatMessageParams.expireTimer,
});
window.log.info(
`WIP: sendMessageJob() closedGroupVisibleMessage`,
closedGroupVisibleMessage
);
// we need the return await so that errors are caught in the catch {}
await getMessageQueue().sendToGroup(closedGroupVisibleMessage);
return;
@ -2231,11 +2238,11 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
}
private isDisappearingMode(mode: DisappearingMessageType) {
// TODO support legacy mode
// TODO legacy messages support will be removed in a future release
const success =
this.get('expirationType') &&
this.get('expirationType') !== 'off' &&
mode === 'deleteAfterRead'
this.get('expirationType') && this.get('expirationType') !== 'off' && mode === 'legacy'
? this.get('expirationType') === 'legacy'
: mode === 'deleteAfterRead'
? this.get('expirationType') === 'deleteAfterRead'
: this.get('expirationType') === 'deleteAfterSend';

@ -1209,9 +1209,17 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
public markReadNoCommit(readAt: number) {
this.set({ unread: 0 });
if (this.get('expirationType') === 'deleteAfterRead' && this.get('expireTimer')) {
const expirationType = this.get('expirationType');
// TODO legacy messages support will be removed in a future release
const convo = this.getConversation();
const isLegacyMode = convo && convo.isPrivate() && expirationType === 'legacy';
if ((isLegacyMode || expirationType === 'deleteAfterRead') && this.get('expireTimer')) {
this.set({
expirationStartTimestamp: setExpirationStartTimestamp('deleteAfterRead', readAt),
expirationStartTimestamp: setExpirationStartTimestamp(
'deleteAfterRead',
readAt,
isLegacyMode
),
});
}
@ -1252,7 +1260,9 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
}
const expiresAt = start + delta;
this.set({ expires_at: expiresAt });
this.set({
expires_at: expiresAt,
});
const id = this.get('id');
if (id) {
await this.commit();
@ -1263,7 +1273,12 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
sentAt: this.get('sent_at'),
});
if (this.get('expirationType') === 'deleteAfterRead') {
// TODO do we not need to do deleteAfterSend here?
// TODO legacy messages support will be removed in a future release
if (
this.get('expirationType') === 'legacy' ||
this.get('expirationType') === 'deleteAfterRead'
) {
const messageHash = this.get('messageHash');
if (messageHash) {
await expireMessageOnSnode(messageHash, this.get('expireTimer'));

@ -163,9 +163,17 @@ function updateReadStatus(message: MessageModel) {
if (message.isExpirationTimerUpdate()) {
message.set({ unread: 0 });
if (message.get('expirationType') === 'deleteAfterRead' && message.get('expireTimer')) {
const expirationType = message.get('expirationType');
// TODO legacy messages support will be removed in a future release
const convo = message.getConversation();
const isLegacyMode = convo && convo.isPrivate() && expirationType === 'legacy';
if ((isLegacyMode || expirationType === 'deleteAfterRead') && message.get('expireTimer')) {
message.set({
expirationStartTimestamp: setExpirationStartTimestamp('deleteAfterRead'),
expirationStartTimestamp: setExpirationStartTimestamp(
'deleteAfterRead',
undefined,
isLegacyMode
),
});
}
}

@ -33,6 +33,7 @@ export class ExpirableMessage extends ContentMessage {
return this.expirationType;
}
// TODO need to account for legacy messages here?
public ttl(): number {
switch (this.expirationType) {
case 'deleteAfterSend':

@ -186,6 +186,11 @@ export class VisibleMessage extends ExpirableMessage {
dataMessage.timestamp = this.timestamp;
// TODO legacy messages support will be removed in a future release
if (this.expirationType === 'legacy' && this.expireTimer) {
dataMessage.expireTimer = this.expireTimer;
}
return dataMessage;
}

@ -122,12 +122,18 @@ async function handleMessageSentSuccess(
sentTo = _.union(sentTo, [sentMessage.device]);
const expirationType = fetchedMessage.get('expirationType');
// TODO legacy messages support will be removed in a future release
const convo = fetchedMessage.getConversation();
const isLegacyMode = convo && convo.isPrivate() && expirationType === 'legacy';
const markAsUnread = isLegacyMode || expirationType === 'deleteAfterRead';
fetchedMessage.set({
sent_to: sentTo,
sent: true,
sent_at: effectiveTimestamp,
// TODO message status overrides this for some reason in the UI, message still disappears though
unread: fetchedMessage.get('expirationType') === 'deleteAfterRead' ? 1 : 0,
unread: markAsUnread ? 1 : 0,
});
if (

@ -182,7 +182,9 @@ export type LocalizerKeys =
| 'timerModeRead'
| 'timerModeSent'
| 'youChangedTheTimer'
| 'youChangedTheTimerLegacy'
| 'theyChangedTheTimer'
| 'theyChangedTheTimerLegacy'
| 'timerOption_0_seconds'
| 'timerOption_5_seconds'
| 'timerOption_10_seconds'

@ -208,14 +208,16 @@ export const ExpirationTimerOptions = {
export function setExpirationStartTimestamp(
mode: DisappearingMessageType,
timestamp?: number
timestamp?: number,
isLegacyMode?: boolean
): number | undefined {
let expirationStartTimestamp: number | undefined = getNowWithNetworkOffset();
// TODO legacy messages support will be removed in a future release
if (timestamp) {
window.log.info(
`WIP: We compare 2 timestamps for a delete after ${
mode === 'deleteAfterRead' ? 'read' : 'send'
`WIP: We compare 2 timestamps for a disappear ${
isLegacyMode ? 'legacy' : mode === 'deleteAfterRead' ? 'after read' : 'after send'
} message: \expirationStartTimestamp `,
new Date(expirationStartTimestamp).toLocaleTimeString(),
'\ntimestamp ',
@ -224,17 +226,18 @@ export function setExpirationStartTimestamp(
expirationStartTimestamp = Math.min(expirationStartTimestamp, timestamp);
}
// TODO legacy messages support will be removed in a future release
if (mode === 'deleteAfterRead') {
window.log.info(
`WIP: We set the start timestamp for a delete after read message to ${new Date(
expirationStartTimestamp
).toLocaleTimeString()}`
`WIP: We set the start timestamp for a ${
isLegacyMode ? 'legacy ' : ''
}delete after read message to ${new Date(expirationStartTimestamp).toLocaleTimeString()}`
);
} else if (mode === 'deleteAfterSend') {
window.log.info(
`WIP: We set the start timestamp for a delete after send message to ${new Date(
expirationStartTimestamp
).toLocaleTimeString()}`
`WIP: We set the start timestamp for a ${
isLegacyMode ? 'legacy ' : ''
}delete after send message to ${new Date(expirationStartTimestamp).toLocaleTimeString()}`
);
} else if (mode === 'off') {
window.log.info(`WIP: Disappearing message mode "${mode}" set. We can safely ignore this.`);

Loading…
Cancel
Save