Capture draft attachment's dimensions

This commit is contained in:
Fedor Indutny 2021-12-01 00:32:55 +01:00 committed by GitHub
parent 951796a389
commit 86d09917a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 0 deletions

View File

@ -113,6 +113,8 @@ export type AttachmentDraftType =
caption?: string;
fileName?: string;
path: string;
width?: number;
height?: number;
} & BaseAttachmentDraftType)
| {
contentType: MIME.MIMEType;

View File

@ -34,6 +34,8 @@ export function resolveDraftAttachmentOnDisk(
'fileName',
'path',
'size',
'width',
'height',
]),
pending: false,
url,

View File

@ -6,6 +6,10 @@ import type {
InMemoryAttachmentDraftType,
AttachmentDraftType,
} from '../types/Attachment';
import { isImageAttachment } from '../types/Attachment';
import { getImageDimensions } from '../types/VisualAttachment';
import * as Errors from '../types/errors';
import * as logger from '../logging/log';
export async function writeDraftAttachment(
attachment: InMemoryAttachmentDraftType
@ -24,10 +28,28 @@ export async function writeDraftAttachment(
)
: undefined;
let dimensions: { width?: number; height?: number } = {};
if (isImageAttachment(attachment)) {
const url = window.Signal.Migrations.getAbsoluteDraftPath(path);
try {
dimensions = await getImageDimensions({
objectUrl: url,
logger,
});
} catch (error) {
logger.error(
'writeDraftAttachment: failed to capture image dimensions',
Errors.toLogFormat(error)
);
}
}
return {
...omit(attachment, ['data', 'screenshotData']),
path,
screenshotPath,
pending: false,
...dimensions,
};
}