## Summary - add a configurable MAXIMUM_FILE_UPLOAD_SIZE installation setting and surface it through super admin and global config payloads - apply the configurable limit to attachment validations and shared upload helpers on dashboard and widget - introduce a reusable helper with unit tests for parsing the limit and extend attachment specs for configurability ------ [Codex Task](https://chatgpt.com/codex/tasks/task_e_6912644786b08326bc8dee9401af6d0a) --------- Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: iamsivin <iamsivin@gmail.com>
34 lines
938 B
JavaScript
34 lines
938 B
JavaScript
export const DEFAULT_MAXIMUM_FILE_UPLOAD_SIZE = 40;
|
|
|
|
export const formatBytes = (bytes, decimals = 2) => {
|
|
if (bytes === 0) return '0 Bytes';
|
|
|
|
const k = 1024;
|
|
const dm = decimals < 0 ? 0 : decimals;
|
|
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
|
|
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
|
|
return parseFloat((bytes / k ** i).toFixed(dm)) + ' ' + sizes[i];
|
|
};
|
|
|
|
export const fileSizeInMegaBytes = bytes => {
|
|
return bytes / (1024 * 1024);
|
|
};
|
|
|
|
export const checkFileSizeLimit = (file, maximumUploadLimit) => {
|
|
const fileSize = file?.file?.size || file?.size;
|
|
const fileSizeInMB = fileSizeInMegaBytes(fileSize);
|
|
return fileSizeInMB <= maximumUploadLimit;
|
|
};
|
|
|
|
export const resolveMaximumFileUploadSize = value => {
|
|
const parsedValue = Number(value);
|
|
|
|
if (!Number.isFinite(parsedValue) || parsedValue <= 0) {
|
|
return DEFAULT_MAXIMUM_FILE_UPLOAD_SIZE;
|
|
}
|
|
|
|
return parsedValue;
|
|
};
|