Delete Sync: Handle and send mostRecentNonExpiringMessages if needed
This commit is contained in:
parent
9c0ea4d6ec
commit
08da49a0aa
13 changed files with 356 additions and 46 deletions
|
@ -3708,6 +3708,10 @@ export default class MessageReceiver
|
|||
const mostRecentMessages = item.mostRecentMessages
|
||||
?.map(message => processMessageToDelete(message, logId))
|
||||
.filter(isNotNil);
|
||||
const mostRecentNonExpiringMessages =
|
||||
item.mostRecentNonExpiringMessages
|
||||
?.map(message => processMessageToDelete(message, logId))
|
||||
.filter(isNotNil);
|
||||
const conversation = item.conversation
|
||||
? processConversationToDelete(item.conversation, logId)
|
||||
: undefined;
|
||||
|
@ -3730,6 +3734,7 @@ export default class MessageReceiver
|
|||
conversation,
|
||||
isFullDelete: Boolean(item.isFullDelete),
|
||||
mostRecentMessages,
|
||||
mostRecentNonExpiringMessages,
|
||||
timestamp,
|
||||
};
|
||||
})
|
||||
|
|
|
@ -97,6 +97,7 @@ import {
|
|||
} from '../types/CallDisposition';
|
||||
import { getProtoForCallHistory } from '../util/callDisposition';
|
||||
import { CallMode } from '../types/Calling';
|
||||
import { MAX_MESSAGE_COUNT } from '../util/deleteForMe.types';
|
||||
|
||||
export type SendMetadataType = {
|
||||
[serviceId: ServiceIdString]: {
|
||||
|
@ -1518,13 +1519,16 @@ export default class MessageSender {
|
|||
} else if (item.type === 'delete-conversation') {
|
||||
const mostRecentMessages =
|
||||
item.mostRecentMessages.map(toAddressableMessage);
|
||||
const mostRecentNonExpiringMessages =
|
||||
item.mostRecentNonExpiringMessages?.map(toAddressableMessage);
|
||||
const conversation = toConversationIdentifier(item.conversation);
|
||||
|
||||
deleteForMe.conversationDeletes = deleteForMe.conversationDeletes || [];
|
||||
deleteForMe.conversationDeletes.push({
|
||||
mostRecentMessages,
|
||||
conversation,
|
||||
isFullDelete: true,
|
||||
mostRecentMessages,
|
||||
mostRecentNonExpiringMessages,
|
||||
});
|
||||
} else if (item.type === 'delete-local-conversation') {
|
||||
const conversation = toConversationIdentifier(item.conversation);
|
||||
|
@ -1544,7 +1548,7 @@ export default class MessageSender {
|
|||
});
|
||||
|
||||
if (messageDeletes.size > 0) {
|
||||
for (const items of messageDeletes.values()) {
|
||||
for (const [conversationId, items] of messageDeletes.entries()) {
|
||||
const first = items[0];
|
||||
if (!first) {
|
||||
throw new Error('Failed to fetch first from items');
|
||||
|
@ -1552,6 +1556,12 @@ export default class MessageSender {
|
|||
const messages = items.map(item => toAddressableMessage(item.message));
|
||||
const conversation = toConversationIdentifier(first.conversation);
|
||||
|
||||
if (items.length > MAX_MESSAGE_COUNT) {
|
||||
log.warn(
|
||||
`getDeleteForMeSyncMessage: Sending ${items.length} message deletes for conversationId ${conversationId}`
|
||||
);
|
||||
}
|
||||
|
||||
deleteForMe.messageDeletes = deleteForMe.messageDeletes || [];
|
||||
deleteForMe.messageDeletes.push({
|
||||
messages,
|
||||
|
|
|
@ -518,6 +518,7 @@ export const deleteConversationSchema = z.object({
|
|||
type: z.literal('delete-conversation').readonly(),
|
||||
conversation: conversationToDeleteSchema,
|
||||
mostRecentMessages: z.array(messageToDeleteSchema),
|
||||
mostRecentNonExpiringMessages: z.array(messageToDeleteSchema).optional(),
|
||||
isFullDelete: z.boolean(),
|
||||
timestamp: z.number(),
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue