From c7d496446ba0eb8cc3d8a386b4b7b61f58b32b91 Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Fri, 9 Oct 2020 19:27:07 -0400 Subject: [PATCH] Fix handling of non-409 errors in ExtensionsPage If the error isn't a 409, we'll want to re-throw the error so it'll be handled by the default system (showing an alert). For simplicity, we can also move 409-handling logic out of setTimeout. Finally, we adjust the timeout to 300 milliseconds to match the modal transition animation length. --- .../js/src/admin/components/ExtensionsPage.js | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/framework/core/js/src/admin/components/ExtensionsPage.js b/framework/core/js/src/admin/components/ExtensionsPage.js index 0ef4e9f9c..c94fede2a 100644 --- a/framework/core/js/src/admin/components/ExtensionsPage.js +++ b/framework/core/js/src/admin/components/ExtensionsPage.js @@ -139,16 +139,20 @@ export default class ExtensionsPage extends Page { // TODO: This workaround should be removed when we move away from bootstrap JS for modals. setTimeout(() => { app.modal.close(); + }, 300); // Bootstrap's Modal.TRANSITION_DURATION is 300 ms. - const error = JSON.parse(e.responseText).errors[0]; + if (e.status !== 409) { + throw e; + } - app.alerts.show( - { type: 'error' }, - app.translator.trans(`core.lib.error.${error.code}_message`, { - extension: error.extension, - extensions: error.extensions.join(', '), - }) - ); - }, 250); + const error = e.response.errors[0]; + + app.alerts.show( + { type: 'error' }, + app.translator.trans(`core.lib.error.${error.code}_message`, { + extension: error.extension, + extensions: error.extensions.join(', '), + }) + ); } }