feat: hit expire endpoint for read messages

for now it will hit the expire endpoint twice
pull/2971/head
William Grant 2 years ago
parent c1dc2e5a6c
commit 93b450ce56

@ -2058,7 +2058,8 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
const readDetails = [];
// eslint-disable-next-line no-restricted-syntax
for (const nowRead of oldUnreadNowRead) {
nowRead.markMessageReadNoCommit(readAt);
// eslint-disable-next-line no-await-in-loop
await nowRead.markMessageReadNoCommit(readAt);
const validTimestamp = nowRead.get('sent_at') || nowRead.get('serverTimestamp');
if (nowRead.get('source') && validTimestamp && isFinite(validTimestamp)) {

@ -93,6 +93,7 @@ import {
setExpirationStartTimestamp,
changeToDisappearingMessageConversationType,
checkForExpireUpdateInContentMessage,
updateMessageExpiryOnSwarm,
} from '../util/expiringMessages';
import { LinkPreviews } from '../util/linkPreviews';
import { Notifications } from '../util/notifications';
@ -1092,7 +1093,7 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
}
public async markMessageAsRead(readAt: number) {
this.markMessageReadNoCommit(readAt);
await this.markMessageReadNoCommit(readAt);
await this.commit();
// the line below makes sure that getNextExpiringMessage will find this message as expiring.
// getNextExpiringMessage is used on app start to clean already expired messages which should have been removed already, but are not
@ -1101,7 +1102,7 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
await this.getConversation()?.refreshInMemoryDetails();
}
public markMessageReadNoCommit(readAt: number) {
public async markMessageReadNoCommit(readAt: number) {
this.set({ unread: READ_MESSAGE_STATE.read });
const convo = this.getConversation();
@ -1117,6 +1118,10 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
);
if (expirationMode === 'legacy' || expirationMode === 'deleteAfterRead') {
if (this.isIncoming() && !this.isExpiring()) {
await updateMessageExpiryOnSwarm(this, 'markMessageReadNoCommit()', true);
}
this.set({
expirationStartTimestamp: setExpirationStartTimestamp(
expirationMode,

@ -185,7 +185,7 @@ async function send(
canBeDeleteAfterRead &&
(expirationMode === 'legacy' || expirationMode === 'deleteAfterRead')
) {
foundMessage = await updateMessageExpiryOnSwarm(foundMessage);
foundMessage = await updateMessageExpiryOnSwarm(foundMessage, 'send()');
}
}

@ -637,8 +637,15 @@ export async function checkHasOutdatedDisappearingMessageClient(
}
}
export async function updateMessageExpiryOnSwarm(message: MessageModel, shouldCommit?: boolean) {
window.log.debug(`WIP: [updateMessageExpiryOnSwarm]\nmessage: ${JSON.stringify(message)}`);
export async function updateMessageExpiryOnSwarm(
message: MessageModel,
callLocation?: string, // this is for debugging purposes
shouldCommit?: boolean
) {
if (callLocation) {
window.log.debug(`WIP: [updateMessageExpiryOnSwarm] called from: ${callLocation} `);
}
// window.log.debug(`WIP: [updateMessageExpiryOnSwarm]\nmessage: ${JSON.stringify(message)}`);
const messageHash = message.get('messageHash');
const expiresAt = message.get('expires_at');

Loading…
Cancel
Save