mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2025-12-20 02:08:57 +00:00
Avoid logging an error when weakly referenced attachment is missing
This commit is contained in:
@@ -18,6 +18,7 @@ import { pipeline } from 'node:stream/promises';
|
||||
import z from 'zod';
|
||||
import GrowingFile from 'growing-file';
|
||||
import lodash from 'lodash';
|
||||
import { pathExists } from 'fs-extra';
|
||||
|
||||
import {
|
||||
type DecryptAttachmentToSinkOptionsType,
|
||||
@@ -611,6 +612,22 @@ export async function handleAttachmentRequest(req: Request): Promise<Response> {
|
||||
return new Response('Access denied', { status: 401 });
|
||||
}
|
||||
|
||||
// Some attachments have weak references (e.g. copied quotes) and we
|
||||
// don't want to treat those attachments missing as an error
|
||||
const weakReferenceParam = url.searchParams.get('weakReference');
|
||||
if (weakReferenceParam != null) {
|
||||
strictAssert(
|
||||
disposition === 'attachment',
|
||||
'Only attachments can have weak references'
|
||||
);
|
||||
const fileExists = await pathExists(path);
|
||||
if (!fileExists) {
|
||||
return new Response('Weakly referenced attachment does not exist', {
|
||||
status: 404,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Get attachment size to trim the padding
|
||||
const sizeParam = url.searchParams.get('size');
|
||||
let maybeSize: number | undefined;
|
||||
|
||||
@@ -35,6 +35,7 @@ export function getLocalAttachmentUrl(
|
||||
| 'path'
|
||||
| 'size'
|
||||
| 'version'
|
||||
| 'copied'
|
||||
>
|
||||
>,
|
||||
{
|
||||
@@ -106,5 +107,10 @@ export function getLocalAttachmentUrl(
|
||||
url.searchParams.set('chunkSize', attachment.chunkSize.toString());
|
||||
}
|
||||
|
||||
// For weak references (e.g. copied quotes) don't error if path is missing
|
||||
if (attachment.copied) {
|
||||
url.searchParams.set('weakReference', '1');
|
||||
}
|
||||
|
||||
return url.toString();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user