
You can't currently upload PSD files over 6MB. This is because its mimetype is `image/vnd.adobe.photoshop`. We think this is an image, and non-GIF images have a limit of 6MB. To fix this, we could do one of two things: 1. Add a special case for PSD files 2. Increase the size limit for unsupported image types such as this I went with the second option. Tested this by: - adding automated tests - uploading a ~9 MB PSD file - uploading a ~1 MB PNG - uploading a ~27 MB PNG (which worked because it's converted to a smaller JPEG) - uploading a ~50 MB text file - trying to upload a ~500 MB text file (which failed, as expected) Addresses [DESKTOP-1168][]. [DESKTOP-1168]: https://signalmessenger.atlassian.net/browse/DESKTOP-1168
32 lines
1.5 KiB
TypeScript
32 lines
1.5 KiB
TypeScript
// Copyright 2018-2021 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
export type MIMEType = string & { _mimeTypeBrand: never };
|
|
|
|
export const APPLICATION_OCTET_STREAM = 'application/octet-stream' as MIMEType;
|
|
export const APPLICATION_JSON = 'application/json' as MIMEType;
|
|
export const AUDIO_AAC = 'audio/aac' as MIMEType;
|
|
export const AUDIO_MP3 = 'audio/mp3' as MIMEType;
|
|
export const IMAGE_GIF = 'image/gif' as MIMEType;
|
|
export const IMAGE_JPEG = 'image/jpeg' as MIMEType;
|
|
export const IMAGE_PNG = 'image/png' as MIMEType;
|
|
export const IMAGE_WEBP = 'image/webp' as MIMEType;
|
|
export const IMAGE_ICO = 'image/x-icon' as MIMEType;
|
|
export const IMAGE_BMP = 'image/bmp' as MIMEType;
|
|
export const VIDEO_MP4 = 'video/mp4' as MIMEType;
|
|
export const VIDEO_QUICKTIME = 'video/quicktime' as MIMEType;
|
|
export const LONG_MESSAGE = 'text/x-signal-plain' as MIMEType;
|
|
|
|
export const isGif = (value: string): value is MIMEType =>
|
|
value === 'image/gif';
|
|
export const isJPEG = (value: string): value is MIMEType =>
|
|
value === 'image/jpeg';
|
|
export const isImage = (value: string): value is MIMEType =>
|
|
Boolean(value) && value.startsWith('image/');
|
|
export const isVideo = (value: string): value is MIMEType =>
|
|
Boolean(value) && value.startsWith('video/');
|
|
// As of 2020-04-16 aif files do not play in Electron nor Chrome. We should only
|
|
// recognize them as file attachments.
|
|
export const isAudio = (value: string): value is MIMEType =>
|
|
Boolean(value) && value.startsWith('audio/') && !value.endsWith('aiff');
|