diff --git a/ts/session/constants.ts b/ts/session/constants.ts index 806061e31..968f035f3 100644 --- a/ts/session/constants.ts +++ b/ts/session/constants.ts @@ -17,6 +17,15 @@ export const DURATION = { WEEKS: days * 7, }; +export const FILESIZE = { + /** 1KB */ + KB: 1024, + /** 1MB */ + MB: 1024 * 1024, + /** 1GB */ + GB: 1024 * 1024 * 1024, +}; + export const TTL_DEFAULT = { /** 20 seconds */ TYPING_MESSAGE: 20 * DURATION.SECONDS, diff --git a/ts/util/attachmentsUtil.ts b/ts/util/attachmentsUtil.ts index 913e96c9c..7856ae076 100644 --- a/ts/util/attachmentsUtil.ts +++ b/ts/util/attachmentsUtil.ts @@ -3,6 +3,7 @@ import imageType from 'image-type'; import { arrayBufferToBlob } from 'blob-util'; import loadImage from 'blueimp-load-image'; +import fileSize from 'filesize'; import { StagedAttachmentType } from '../components/conversation/composition/CompositionBox'; import { SignalService } from '../protobuf'; import { getDecryptedMediaUrl } from '../session/crypto/DecryptedAttachmentsManager'; @@ -12,7 +13,7 @@ import { IMAGE_GIF, IMAGE_JPEG, IMAGE_PNG, IMAGE_TIFF, IMAGE_UNKNOWN } from '../ import { getAbsoluteAttachmentPath, processNewAttachment } from '../types/MessageAttachment'; import { THUMBNAIL_SIDE } from '../types/attachments/VisualAttachment'; -import { MAX_ATTACHMENT_FILESIZE_BYTES } from '../session/constants'; +import { FILESIZE, MAX_ATTACHMENT_FILESIZE_BYTES } from '../session/constants'; import { perfEnd, perfStart } from '../session/utils/Performance'; /** @@ -53,7 +54,7 @@ export async function autoScaleForAvatar( } if (blob.type === IMAGE_GIF && blob.size > maxSize) { - throw new Error(`GIF is too large, required size is ${maxSize}`); + throw new Error(`GIF is too large. Max size: ${fileSize(maxSize, { base: 10, round: 0 })}`); } perfStart(`loadimage-*${blob.size}`);