diff --git a/packages/strapi-admin/admin/src/containers/App/index.js b/packages/strapi-admin/admin/src/containers/App/index.js index f7d718c78e..b9f7fd6829 100644 --- a/packages/strapi-admin/admin/src/containers/App/index.js +++ b/packages/strapi-admin/admin/src/containers/App/index.js @@ -42,7 +42,9 @@ function App(props) { try { const requestURL = '/users-permissions/init'; - const { hasAdmin } = await request(requestURL, { method: 'GET' }); + const { hasAdmin } = await request(requestURL, { method: 'GET' }, false, false, { + noAuth: true, + }); const { data } = await request('/admin/init', { method: 'GET' }); const { uuid } = data; @@ -86,9 +88,7 @@ function App(props) { ( - - )} + render={routerProps => } exact /> @@ -108,10 +108,7 @@ export function mapDispatchToProps(dispatch) { return bindActionCreators({ getDataSucceeded }, dispatch); } -const withConnect = connect( - null, - mapDispatchToProps -); +const withConnect = connect(null, mapDispatchToProps); export default compose(withConnect)(App); export { App }; diff --git a/packages/strapi-helper-plugin/lib/src/utils/request.js b/packages/strapi-helper-plugin/lib/src/utils/request.js index 9e7fea5369..1d28fd9e7f 100644 --- a/packages/strapi-helper-plugin/lib/src/utils/request.js +++ b/packages/strapi-helper-plugin/lib/src/utils/request.js @@ -21,10 +21,7 @@ function parseJSON(response) { * @return {object|undefined} Returns either the response, or throws an error */ function checkStatus(response, checkToken = true) { - if ( - (response.status >= 200 && response.status < 300) || - response.status === 0 - ) { + if ((response.status >= 200 && response.status < 300) || response.status === 0) { return response; } @@ -32,12 +29,16 @@ function checkStatus(response, checkToken = true) { return checkTokenValidity(response); } - return parseJSON(response).then(responseFormatted => { - const error = new Error(response.statusText); - error.response = response; - error.response.payload = responseFormatted; - throw error; - }); + return parseJSON(response) + .then(responseFormatted => { + const error = new Error(response.statusText); + error.response = response; + error.response.payload = responseFormatted; + throw error; + }) + .catch(() => { + throw response; + }); } function checkTokenValidity(response) { @@ -114,13 +115,7 @@ function serverRestartWatcher(response) { * @return {object} The response data */ export default function request(...args) { - let [ - url, - options = {}, - shouldWatchServerRestart, - stringify = true, - ...rest - ] = args; + let [url, options = {}, shouldWatchServerRestart, stringify = true, ...rest] = args; let noAuth; try { diff --git a/packages/strapi-plugin-upload/admin/src/components/CheckControl/index.js b/packages/strapi-plugin-upload/admin/src/components/CheckControl/index.js index 0012138580..5b9cc8ef12 100644 --- a/packages/strapi-plugin-upload/admin/src/components/CheckControl/index.js +++ b/packages/strapi-plugin-upload/admin/src/components/CheckControl/index.js @@ -40,7 +40,7 @@ const CheckControl = ({ title, onSubmitEdit }) => { color="#6DBB1A" onClick={handleToggle} type="check" - title={formatMessage({ id: getTrad(`control-card.${title}`) })} + title={title} iconStyle={{ height: '1.4rem', width: '1.4rem' }} /> diff --git a/packages/strapi-plugin-upload/admin/src/components/EditForm/index.js b/packages/strapi-plugin-upload/admin/src/components/EditForm/index.js index cb373068e5..67682d2d4a 100644 --- a/packages/strapi-plugin-upload/admin/src/components/EditForm/index.js +++ b/packages/strapi-plugin-upload/admin/src/components/EditForm/index.js @@ -55,6 +55,7 @@ const EditForm = forwardRef( const [isCropping, setIsCropping] = useState(false); const [infos, setInfos] = useState({ width: null, height: null }); const [src, setSrc] = useState(null); + const cacheRef = useRef(performance.now()); const fileURL = get(fileToEdit, ['file', 'url'], null); const prefixedFileURL = fileURL ? prefixFileUrlWithBackendUrl(fileURL) : null; @@ -142,30 +143,39 @@ const EditForm = forwardRef( }; const getCroppedResult = () => { - return new Promise(resolve => { - const canvas = cropper.current.getCroppedCanvas(); + return new Promise((resolve, reject) => { + try { + const canvas = cropper.current.getCroppedCanvas(); - canvas.toBlob(async blob => { - const { - file: { lastModifiedDate, lastModified, name }, - } = fileToEdit; + canvas.toBlob(async blob => { + const { + file: { lastModifiedDate, lastModified, name }, + } = fileToEdit; - resolve( - new File([blob], name, { - type: mimeType, - lastModified, - lastModifiedDate, - }) - ); - }); + resolve( + new File([blob], name, { + type: mimeType, + lastModified, + lastModifiedDate, + }) + ); + }); + } catch (err) { + reject(); + } }); }; const handleClickEditCroppedFile = async (e, shouldDuplicate = false) => { - const file = await getCroppedResult(); + try { + const file = await getCroppedResult(); - setIsCropping(false); - onSubmitEdit(e, shouldDuplicate, file); + onSubmitEdit(e, shouldDuplicate, file); + } catch (err) { + // Silent + } finally { + setIsCropping(false); + } }; const handleClickDelete = () => { @@ -274,7 +284,7 @@ const EditForm = forwardRef( {isImg ? ( {get(fileToEdit, diff --git a/packages/strapi-plugin-upload/admin/src/containers/InputModalStepper/InputModalStepper.js b/packages/strapi-plugin-upload/admin/src/containers/InputModalStepper/InputModalStepper.js index b2480a2e49..d4f8ec2dbb 100644 --- a/packages/strapi-plugin-upload/admin/src/containers/InputModalStepper/InputModalStepper.js +++ b/packages/strapi-plugin-upload/admin/src/containers/InputModalStepper/InputModalStepper.js @@ -234,13 +234,15 @@ const InputModalStepper = ({ isOpen, onToggle, onInputMediaChange }) => { handleEditExistingFile(editedFile); goToList(); } catch (err) { + const status = get(err, 'response.status', get(err, 'status', null)); + const statusText = get(err, 'response.statusText', get(err, 'statusText', null)); const errorMessage = get( err, ['response', 'payload', 'message', '0', 'messages', '0', 'message'], - get(err, ['response', 'payload', 'message'], null) + get(err, ['response', 'payload', 'message'], statusText) ); - if (errorMessage) { + if (status) { handleSetFileToEditError(errorMessage); } } @@ -263,6 +265,8 @@ const InputModalStepper = ({ isOpen, onToggle, onInputMediaChange }) => { const shouldDisplayNextButton = currentStep === 'browse' && displayNextButton; const isFinishButtonDisabled = filesToUpload.some(file => file.isDownloading || file.isUploading); + const areButtonsDisabledOnEditExistingFile = + currentStep === 'edit' && fileToEdit.isUploading === true; return ( <> @@ -348,7 +352,7 @@ const InputModalStepper = ({ isOpen, onToggle, onInputMediaChange }) => { {currentStep === 'edit' && (