Ensure that send proceeds even if quote thumbnail attachment not found

This commit is contained in:
Scott Nonnenberg
2025-03-18 07:32:41 +10:00
committed by GitHub
parent 9a8b42d835
commit 605ddb7b3e

View File

@@ -38,6 +38,7 @@ import type {
ConversationQueueJobBundle,
NormalMessageSendJobData,
} from '../conversationJobQueue';
import type { QuotedMessageType } from '../../model-types.d';
import { handleMultipleSendErrors } from './handleMultipleSendErrors';
import { ourProfileKeyService } from '../../services/ourProfileKey';
@@ -844,10 +845,43 @@ async function uploadMessageQuote({
prop: 'quote',
targetTimestamp,
});
const loadedQuote = await loadQuoteData(startingQuote);
let loadedQuote: QuotedMessageType | null;
if (!loadedQuote) {
return undefined;
// We are resilient to this because it's easy for quote thumbnails to be deleted out
// from under us, since the attachment is shared with the original message. Delete for
// Everyone on the original message, and the shared attachment will be deleted.
try {
loadedQuote = await loadQuoteData(startingQuote);
if (!loadedQuote) {
return undefined;
}
} catch (error) {
log.error(
'uplodateMessageQuote: Failed to load quote thumbnail',
Errors.toLogFormat(error)
);
if (!startingQuote) {
return undefined;
}
return {
isGiftBadge: startingQuote.isGiftBadge,
id: startingQuote.id ?? undefined,
authorAci: startingQuote.authorAci
? normalizeAci(
startingQuote.authorAci,
'sendNormalMessage.quote.authorAci'
)
: undefined,
text: startingQuote.text,
bodyRanges: startingQuote.bodyRanges,
attachments: (startingQuote.attachments || []).map(attachment => {
return {
contentType: attachment.contentType,
fileName: attachment.fileName,
};
}),
};
}
const attachmentsAfterThumbnailUpload = await uploadQueue.addAll(