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;
}
const messages = await Data.getLastMessagesByConversation(this.id, 1, true);
const existingLastMessageAttribute = this.get('lastMessage');
const existingLastMessageStatus = this.get('lastMessageStatus');
if (!messages || !messages.length) {
if (existingLastMessageAttribute || existingLastMessageStatus) {
this.set({
lastMessageStatus: undefined,
lastMessage: undefined,
});
await this.commit();
}
return;
}
const lastMessageModel = messages.at(0);
@ -2037,8 +2045,6 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
lastMessageStatus,
}
: { 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.

@ -67,6 +67,7 @@ async function destroyExpiredMessages() {
try {
window.log.info('destroyExpiredMessages: Loading messages...');
const messages = await Data.getExpiredMessages();
window.log.debug('destroyExpiredMessages: count:', messages.length);
const messagesExpiredDetails: Array<{
conversationKey: string;
@ -85,6 +86,7 @@ async function destroyExpiredMessages() {
await destroyMessagesAndUpdateRedux(messagesExpiredDetails);
const convosToRefresh = uniq(messagesExpiredDetails.map(m => m.conversationKey));
window.log.info('destroyExpiredMessages: convosToRefresh:', convosToRefresh);
await Promise.all(
convosToRefresh.map(async c => {
getConversationController()
@ -480,6 +482,18 @@ function getMessageReadyToDisappear(
expirationStartTimestamp,
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

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

Loading…
Cancel
Save