fix: bug with updatelastmessage not resetting when no msgs

also make fix the DaS expires_at so destroyExpiredMessages finds it
pull/2940/head
Audric Ackermann 2 years ago
parent bd7c181e1e
commit 5b704ebdc7

@ -2022,8 +2022,16 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
return; return;
} }
const messages = await Data.getLastMessagesByConversation(this.id, 1, true); const messages = await Data.getLastMessagesByConversation(this.id, 1, true);
const existingLastMessageAttribute = this.get('lastMessage');
const existingLastMessageStatus = this.get('lastMessageStatus');
if (!messages || !messages.length) { if (!messages || !messages.length) {
if (existingLastMessageAttribute || existingLastMessageStatus) {
this.set({
lastMessageStatus: undefined,
lastMessage: undefined,
});
await this.commit();
}
return; return;
} }
const lastMessageModel = messages.at(0); const lastMessageModel = messages.at(0);
@ -2037,8 +2045,6 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
lastMessageStatus, lastMessageStatus,
} }
: { lastMessage: '', lastMessageStatus: undefined }; : { lastMessage: '', lastMessageStatus: undefined };
const existingLastMessageAttribute = this.get('lastMessage');
const existingLastMessageStatus = this.get('lastMessageStatus');
// TODO when the last message get removed from a conversation, the lastUpdate is ignored and we keep the last message. // TODO when the last message get removed from a conversation, the lastUpdate is ignored and we keep the last message.

@ -67,6 +67,7 @@ async function destroyExpiredMessages() {
try { try {
window.log.info('destroyExpiredMessages: Loading messages...'); window.log.info('destroyExpiredMessages: Loading messages...');
const messages = await Data.getExpiredMessages(); const messages = await Data.getExpiredMessages();
window.log.debug('destroyExpiredMessages: count:', messages.length);
const messagesExpiredDetails: Array<{ const messagesExpiredDetails: Array<{
conversationKey: string; conversationKey: string;
@ -85,6 +86,7 @@ async function destroyExpiredMessages() {
await destroyMessagesAndUpdateRedux(messagesExpiredDetails); await destroyMessagesAndUpdateRedux(messagesExpiredDetails);
const convosToRefresh = uniq(messagesExpiredDetails.map(m => m.conversationKey)); const convosToRefresh = uniq(messagesExpiredDetails.map(m => m.conversationKey));
window.log.info('destroyExpiredMessages: convosToRefresh:', convosToRefresh);
await Promise.all( await Promise.all(
convosToRefresh.map(async c => { convosToRefresh.map(async c => {
getConversationController() getConversationController()
@ -480,6 +482,18 @@ function getMessageReadyToDisappear(
expirationStartTimestamp, expirationStartTimestamp,
expires_at, expires_at,
}); });
} else if (
expirationType === 'deleteAfterSend' &&
expireTimer > 0 &&
messageExpirationFromRetrieve &&
messageExpirationFromRetrieve > 0
) {
const expirationStartTimestamp = messageExpirationFromRetrieve - expireTimer * 1000;
const expires_at = messageExpirationFromRetrieve;
messageModel.set({
expirationStartTimestamp,
expires_at,
});
} }
// This message is an ExpirationTimerUpdate // This message is an ExpirationTimerUpdate

@ -16,6 +16,7 @@ import {
PropsForMessageRequestResponse, PropsForMessageRequestResponse,
} from '../../models/messageType'; } from '../../models/messageType';
import { getConversationController } from '../../session/conversations'; import { getConversationController } from '../../session/conversations';
import { DisappearingMessages } from '../../session/disappearing_messages';
import { import {
DisappearingMessageConversationModeType, DisappearingMessageConversationModeType,
DisappearingMessageType, DisappearingMessageType,
@ -1140,6 +1141,7 @@ export async function openConversationWithMessages(args: {
}) { }) {
const { conversationKey, messageId } = args; const { conversationKey, messageId } = args;
await DisappearingMessages.destroyExpiredMessages();
await unmarkAsForcedUnread(conversationKey); await unmarkAsForcedUnread(conversationKey);
const firstUnreadIdOnOpen = await Data.getFirstUnreadMessageIdInConversation(conversationKey); const firstUnreadIdOnOpen = await Data.getFirstUnreadMessageIdInConversation(conversationKey);

Loading…
Cancel
Save