Reset storyReplyContext whenever a story expires
This commit is contained in:
parent
25bc16300c
commit
e80d9d1f30
2 changed files with 55 additions and 2 deletions
|
@ -3,6 +3,7 @@
|
|||
|
||||
import type { MessageAttributesType } from '../model-types.d';
|
||||
import { deletePackReference } from '../types/Stickers';
|
||||
import { isStory } from '../messages/helpers';
|
||||
|
||||
export async function cleanupMessage(
|
||||
message: MessageAttributesType
|
||||
|
@ -17,6 +18,53 @@ export async function cleanupMessage(
|
|||
window.MessageController.unregister(id);
|
||||
|
||||
await deleteMessageData(message);
|
||||
|
||||
if (isStory(message)) {
|
||||
await fixupStoryReplies(conversationId, id);
|
||||
}
|
||||
}
|
||||
|
||||
async function fixupStoryReplies(
|
||||
conversationId: string,
|
||||
storyId: string,
|
||||
pagination?: {
|
||||
messageId: string;
|
||||
receivedAt: number;
|
||||
}
|
||||
): Promise<void> {
|
||||
const { messageId, receivedAt } = pagination || {};
|
||||
|
||||
const replies = await window.Signal.Data.getOlderMessagesByConversation(
|
||||
conversationId,
|
||||
{
|
||||
includeStoryReplies: false,
|
||||
receivedAt,
|
||||
storyId,
|
||||
}
|
||||
);
|
||||
|
||||
if (!replies.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
const lastMessage = replies[replies.length - 1];
|
||||
const lastMessageId = lastMessage.id;
|
||||
const lastReceivedAt = lastMessage.received_at;
|
||||
|
||||
if (messageId === lastMessageId) {
|
||||
return;
|
||||
}
|
||||
|
||||
replies.forEach(reply => {
|
||||
const model = window.MessageController.register(reply.id, reply);
|
||||
model.unset('storyReplyContext');
|
||||
model.hydrateStoryContext(null);
|
||||
});
|
||||
|
||||
return fixupStoryReplies(conversationId, storyId, {
|
||||
messageId: lastMessageId,
|
||||
receivedAt: lastReceivedAt,
|
||||
});
|
||||
}
|
||||
|
||||
export async function deleteMessageData(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue