Bump thumbnail size to 5MB & check size before upload.
- The previous 2MB was a CDN limit (more of a mistake). That has been increased to a far greater number, so we're setting a more reasonable 5MB limit. - The previous code checks/shows the "size exceeded" message after the file has been uploaded ... in the `catch` block. This will not work since the CDN now allows a 5MB file. - Fixed by checking the size before actually uploading.
This commit is contained in:
parent
0f5948d871
commit
f9a1fcc6a7
3 changed files with 30 additions and 22 deletions
|
@ -21,7 +21,7 @@ THUMBNAIL_CARDS_CDN_URL=https://cards.odycdn.com/
|
||||||
THUMBNAIL_HEIGHT=220
|
THUMBNAIL_HEIGHT=220
|
||||||
THUMBNAIL_WIDTH=390
|
THUMBNAIL_WIDTH=390
|
||||||
THUMBNAIL_QUALITY=85
|
THUMBNAIL_QUALITY=85
|
||||||
THUMBNAIL_CDN_SIZE_LIMIT_BYTES=2097152
|
THUMBNAIL_CDN_SIZE_LIMIT_BYTES=5242880
|
||||||
WELCOME_VERSION=1.0
|
WELCOME_VERSION=1.0
|
||||||
|
|
||||||
# STRIPE
|
# STRIPE
|
||||||
|
|
|
@ -25,15 +25,22 @@ function SelectAsset(props: Props) {
|
||||||
const { onUpdate, onDone, assetName, currentValue, recommended, title, inline } = props;
|
const { onUpdate, onDone, assetName, currentValue, recommended, title, inline } = props;
|
||||||
const [pathSelected, setPathSelected] = React.useState('');
|
const [pathSelected, setPathSelected] = React.useState('');
|
||||||
const [fileSelected, setFileSelected] = React.useState<any>(null);
|
const [fileSelected, setFileSelected] = React.useState<any>(null);
|
||||||
const [fileSize, setFileSize] = React.useState(0);
|
|
||||||
const [uploadStatus, setUploadStatus] = React.useState(STATUS.READY);
|
const [uploadStatus, setUploadStatus] = React.useState(STATUS.READY);
|
||||||
const [useUrl, setUseUrl] = usePersistedState('thumbnail-upload:mode', false);
|
const [useUrl, setUseUrl] = usePersistedState('thumbnail-upload:mode', false);
|
||||||
const [url, setUrl] = React.useState(currentValue);
|
const [url, setUrl] = React.useState(currentValue);
|
||||||
const [error, setError] = React.useState();
|
const [uploadErrorMsg, setUploadErrorMsg] = React.useState();
|
||||||
|
|
||||||
|
React.useEffect(() => {
|
||||||
|
if (useUrl) {
|
||||||
|
setUploadErrorMsg('');
|
||||||
|
setFileSelected(null);
|
||||||
|
setPathSelected('');
|
||||||
|
}
|
||||||
|
}, [useUrl]);
|
||||||
|
|
||||||
function doUploadAsset() {
|
function doUploadAsset() {
|
||||||
const uploadError = (error = '') => {
|
const uploadError = (error = '') => {
|
||||||
setError(error);
|
setUploadErrorMsg(error);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onSuccess = (thumbnailUrl) => {
|
const onSuccess = (thumbnailUrl) => {
|
||||||
|
@ -71,15 +78,7 @@ function SelectAsset(props: Props) {
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
if (fileSize >= THUMBNAIL_CDN_SIZE_LIMIT_BYTES) {
|
uploadError(err.message);
|
||||||
uploadError(
|
|
||||||
__('Thumbnail size over %max_size%MB, please edit and reupload.', {
|
|
||||||
max_size: THUMBNAIL_CDN_SIZE_LIMIT_BYTES / (1024 * 1024),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
uploadError(err.message);
|
|
||||||
}
|
|
||||||
setUploadStatus(STATUS.READY);
|
setUploadStatus(STATUS.READY);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -99,7 +98,7 @@ function SelectAsset(props: Props) {
|
||||||
const formBody = (
|
const formBody = (
|
||||||
<>
|
<>
|
||||||
<fieldset-section>
|
<fieldset-section>
|
||||||
{error && <div className="error__text">{error}</div>}
|
{uploadErrorMsg && <div className="error__text">{uploadErrorMsg}</div>}
|
||||||
{useUrl ? (
|
{useUrl ? (
|
||||||
<FormField
|
<FormField
|
||||||
autoFocus
|
autoFocus
|
||||||
|
@ -123,10 +122,17 @@ function SelectAsset(props: Props) {
|
||||||
onFileChosen={(file) => {
|
onFileChosen={(file) => {
|
||||||
if (file.name) {
|
if (file.name) {
|
||||||
setFileSelected(file);
|
setFileSelected(file);
|
||||||
setFileSize(file.size);
|
|
||||||
// what why? why not target=WEB this?
|
// what why? why not target=WEB this?
|
||||||
// file.path is undefined in web but available in electron
|
// file.path is undefined in web but available in electron
|
||||||
setPathSelected(file.name || file.path);
|
setPathSelected(file.name || file.path);
|
||||||
|
setUploadErrorMsg('');
|
||||||
|
|
||||||
|
if (file.size >= THUMBNAIL_CDN_SIZE_LIMIT_BYTES) {
|
||||||
|
const maxSizeMB = THUMBNAIL_CDN_SIZE_LIMIT_BYTES / (1024 * 1024);
|
||||||
|
setUploadErrorMsg(
|
||||||
|
__('Thumbnail size over %max_size%MB, please edit and reupload.', { max_size: maxSizeMB })
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
accept={accept}
|
accept={accept}
|
||||||
|
@ -140,7 +146,9 @@ function SelectAsset(props: Props) {
|
||||||
button="primary"
|
button="primary"
|
||||||
type="submit"
|
type="submit"
|
||||||
label={useUrl ? __('Done') : __('Upload')}
|
label={useUrl ? __('Done') : __('Upload')}
|
||||||
disabled={!useUrl && (uploadStatus === STATUS.UPLOADING || !pathSelected || !fileSelected)}
|
disabled={
|
||||||
|
!useUrl && (uploadStatus === STATUS.UPLOADING || !pathSelected || !fileSelected || uploadErrorMsg)
|
||||||
|
}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (!useUrl) {
|
if (!useUrl) {
|
||||||
doUploadAsset();
|
doUploadAsset();
|
||||||
|
|
|
@ -477,12 +477,6 @@ export const doUploadThumbnail = (
|
||||||
}
|
}
|
||||||
|
|
||||||
const userInput = [fileName, fileExt, fileType, thumbnail, size];
|
const userInput = [fileName, fileExt, fileType, thumbnail, size];
|
||||||
if (size >= THUMBNAIL_CDN_SIZE_LIMIT_BYTES) {
|
|
||||||
message = __('Thumbnail size over %max_size%MB, please edit and reupload.', {
|
|
||||||
max_size: THUMBNAIL_CDN_SIZE_LIMIT_BYTES / (1024 * 1024),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
uploadError({ message, cause: `${userInput.join(' | ')}` });
|
uploadError({ message, cause: `${userInput.join(' | ')}` });
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -521,6 +515,12 @@ export const doUploadThumbnail = (
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (size && size >= THUMBNAIL_CDN_SIZE_LIMIT_BYTES) {
|
||||||
|
const maxSizeMB = THUMBNAIL_CDN_SIZE_LIMIT_BYTES / (1024 * 1024);
|
||||||
|
uploadError(__('Thumbnail size over %max_size%MB, please edit and reupload.', { max_size: maxSizeMB }));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const data = new FormData();
|
const data = new FormData();
|
||||||
const file = thumbnailBlob || (thumbnail && new File([thumbnail], fileName, { type: fileType }));
|
const file = thumbnailBlob || (thumbnail && new File([thumbnail], fileName, { type: fileType }));
|
||||||
// $FlowFixMe
|
// $FlowFixMe
|
||||||
|
|
Loading…
Reference in a new issue