From 1795153fade280484a16a56294b904ea489f3610 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 14 Jul 2020 16:42:10 +1000 Subject: [PATCH] fixes exception handling in content editor --- .../components/content/edit.controller.js | 27 +++++++++---------- .../services/umbrequesthelper.service.js | 14 +++++----- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js index c07bb9bc83..7f6d1cc728 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js @@ -4,7 +4,8 @@ function ContentEditController($rootScope, $scope, $routeParams, $q, $window, appState, contentResource, entityResource, navigationService, notificationsService, serverValidationManager, contentEditingHelper, localizationService, formHelper, umbRequestHelper, - editorState, $http, eventsService, overlayService, $location, localStorageService, treeService) { + editorState, $http, eventsService, overlayService, $location, localStorageService, treeService, + $exceptionHandler) { var evts = []; var infiniteMode = $scope.infiniteModel && $scope.infiniteModel.infiniteMode; @@ -620,8 +621,7 @@ model.submitButtonState = "error"; //re-map the dialog model since we've re-bound the properties dialog.variants = $scope.content.variants; - //don't reject, we've handled the error - return $q.when(err); + $exceptionHandler(err); }); }, close: function () { @@ -642,8 +642,9 @@ action: "sendToPublish" }).then(function () { $scope.page.buttonGroupState = "success"; - }, function () { + }, function (err) { $scope.page.buttonGroupState = "error"; + $exceptionHandler(err); });; } }; @@ -679,8 +680,7 @@ model.submitButtonState = "error"; //re-map the dialog model since we've re-bound the properties dialog.variants = $scope.content.variants; - //don't reject, we've handled the error - return $q.when(err); + $exceptionHandler(err); }); }, close: function () { @@ -703,8 +703,9 @@ action: "publish" }).then(function () { $scope.page.buttonGroupState = "success"; - }, function () { + }, function (err) { $scope.page.buttonGroupState = "error"; + $exceptionHandler(err); }); } }; @@ -742,8 +743,7 @@ model.submitButtonState = "error"; //re-map the dialog model since we've re-bound the properties dialog.variants = $scope.content.variants; - //don't reject, we've handled the error - return $q.when(err); + $exceptionHandler(err); }); }, close: function (oldModel) { @@ -766,8 +766,9 @@ action: "save" }).then(function () { $scope.page.saveButtonState = "success"; - }, function () { + }, function (err) { $scope.page.saveButtonState = "error"; + $exceptionHandler(err); }); } @@ -820,8 +821,7 @@ model.submitButtonState = "error"; //re-map the dialog model since we've re-bound the properties dialog.variants = Utilities.copy($scope.content.variants); - //don't reject, we've handled the error - return $q.when(err); + $exceptionHandler(err); }); }, @@ -880,8 +880,7 @@ model.submitButtonState = "error"; //re-map the dialog model since we've re-bound the properties dialog.variants = $scope.content.variants; - //don't reject, we've handled the error - return $q.when(err); + $exceptionHandler(err); }); }, diff --git a/src/Umbraco.Web.UI.Client/src/common/services/umbrequesthelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/umbrequesthelper.service.js index 4cbc5e567a..7b43b239ea 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/umbrequesthelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/umbrequesthelper.service.js @@ -165,11 +165,9 @@ function umbRequestHelper($http, $q, notificationsService, eventsService, formHe return; //sometimes oddly this happens, nothing we can do } - if (!response.status && response.message && response.stack) { - //this is a JS/angular error that we should deal with - return $q.reject({ - errorMsg: response.message - }); + if (!response.status) { + //this is a JS/angular error + return $q.reject(response); } //invoke the callback @@ -280,7 +278,11 @@ function umbRequestHelper($http, $q, notificationsService, eventsService, formHe //the data returned is the up-to-date data so the UI will refresh return $q.resolve(response.data); }, function (response) { - //failure callback + + if (!response.status) { + //this is a JS/angular error + return $q.reject(response); + } //when there's a 500 (unhandled) error show a YSOD overlay if debugging is enabled. if (response.status >= 500 && response.status < 600) {