From 592de3044a93ff2903664b66478e712c6c29836d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 20 Sep 2017 19:20:12 +0300 Subject: [PATCH] Revised abp.ajax based on latest error handling changes. --- .../AbpDesk/Tickets/ITicketAppService.cs | 2 + .../AbpDesk/Tickets/TicketAppService.cs | 6 + .../wwwroot/abp/abp.jquery.js | 110 +++++------------- .../Abp/Http/RemoteServiceErrorResponse.cs | 5 - 4 files changed, 34 insertions(+), 89 deletions(-) diff --git a/src/AbpDesk/AbpDesk.Application.Contracts/AbpDesk/Tickets/ITicketAppService.cs b/src/AbpDesk/AbpDesk.Application.Contracts/AbpDesk/Tickets/ITicketAppService.cs index ddb47cfa60..721aa3f90c 100644 --- a/src/AbpDesk/AbpDesk.Application.Contracts/AbpDesk/Tickets/ITicketAppService.cs +++ b/src/AbpDesk/AbpDesk.Application.Contracts/AbpDesk/Tickets/ITicketAppService.cs @@ -10,5 +10,7 @@ namespace AbpDesk.Tickets Task> GetAll(GetAllTicketsInput input); ListResultDto GetAll2(GetAllTicketsInput input); + + void TestException(); } } diff --git a/src/AbpDesk/AbpDesk.Application/AbpDesk/Tickets/TicketAppService.cs b/src/AbpDesk/AbpDesk.Application/AbpDesk/Tickets/TicketAppService.cs index dcc897d516..c824893322 100644 --- a/src/AbpDesk/AbpDesk.Application/AbpDesk/Tickets/TicketAppService.cs +++ b/src/AbpDesk/AbpDesk.Application/AbpDesk/Tickets/TicketAppService.cs @@ -7,6 +7,7 @@ using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; using Volo.Abp.Linq; +using Volo.Abp.Ui; namespace AbpDesk.Tickets { @@ -51,5 +52,10 @@ namespace AbpDesk.Tickets ObjectMapper.Map, List>(tickets) ); } + + public void TestException() + { + throw new UserFriendlyException("a user friendly message!"); + } } } diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI/wwwroot/abp/abp.jquery.js b/src/Volo.Abp.AspNetCore.Mvc.UI/wwwroot/abp/abp.jquery.js index 1b74c060ae..38b4c3cd0f 100644 --- a/src/Volo.Abp.AspNetCore.Mvc.UI/wwwroot/abp/abp.jquery.js +++ b/src/Volo.Abp.AspNetCore.Mvc.UI/wwwroot/abp/abp.jquery.js @@ -13,21 +13,18 @@ userOptions = userOptions || {}; var options = $.extend(true, {}, abp.ajax.defaultOpts, userOptions); + options.success = undefined; options.error = undefined; return $.Deferred(function ($dfd) { $.ajax(options) .done(function (data, textStatus, jqXHR) { - if (data.__abp) { - abp.ajax.handleResponse(data, userOptions, $dfd, jqXHR); - } else { - $dfd.resolve(data); - userOptions.success && userOptions.success(data); - } + $dfd.resolve(data); + userOptions.success && userOptions.success(data); }).fail(function (jqXHR) { - if (jqXHR.responseJSON && jqXHR.responseJSON.__abp) { - abp.ajax.handleResponse(jqXHR.responseJSON, userOptions, $dfd, jqXHR); + if (jqXHR.getResponseHeader('_AbpErrorFormat') === 'true') { + abp.ajax.handleAbpErrorResponse(jqXHR.responseJSON, userOptions, $dfd, jqXHR); } else { abp.ajax.handleNonAbpErrorResponse(jqXHR, userOptions, $dfd); } @@ -110,6 +107,27 @@ userOptions.error && userOptions.error.apply(this, arguments); }, + handleAbpErrorResponse: function (data, userOptions, $dfd, jqXHR) { + var messagePromise = null; + + if (data.error) { + if (userOptions.abpHandleError !== false) { + messagePromise = abp.ajax.showError(data.error); + } + } else { + data.error = abp.ajax.defaultError; + } + + abp.ajax.logError(data.error); + + $dfd && $dfd.reject(data.error, jqXHR); + userOptions.error && userOptions.error(data.error, jqXHR); + + if (jqXHR.status === 401 && userOptions.abpHandleError !== false) { + abp.ajax.handleUnAuthorizedRequest(messagePromise); + } + }, + handleUnAuthorizedRequest: function (messagePromise, targetUrl) { if (messagePromise) { messagePromise.done(function () { @@ -120,44 +138,6 @@ } }, - handleResponse: function (data, userOptions, $dfd, jqXHR) { - if (data) { - if (data.success === true) { - $dfd && $dfd.resolve(data.result, data, jqXHR); - userOptions.success && userOptions.success(data.result, data, jqXHR); - - if (data.targetUrl) { - abp.ajax.handleTargetUrl(data.targetUrl); - } - } else if (data.success === false) { - var messagePromise = null; - - if (data.error) { - if (userOptions.abpHandleError !== false) { - messagePromise = abp.ajax.showError(data.error); - } - } else { - data.error = abp.ajax.defaultError; - } - - abp.ajax.logError(data.error); - - $dfd && $dfd.reject(data.error, jqXHR); - userOptions.error && userOptions.error(data.error, jqXHR); - - if (jqXHR.status === 401 && userOptions.abpHandleError !== false) { - abp.ajax.handleUnAuthorizedRequest(messagePromise, data.targetUrl); - } - } else { //not wrapped result - $dfd && $dfd.resolve(data, null, jqXHR); - userOptions.success && userOptions.success(data, null, jqXHR); - } - } else { //no data sent to back - $dfd && $dfd.resolve(jqXHR); - userOptions.success && userOptions.success(jqXHR); - } - }, - blockUI: function (options) { if (options.blockUI) { if (options.blockUI === true) { //block whole page @@ -194,44 +174,6 @@ return abp.ajax.ajaxSendHandler(event, request, settings); }); - /* JQUERY PLUGIN ENHANCEMENTS ********************************************/ - - /* jQuery Form Plugin - * http://www.malsup.com/jquery/form/ - */ - - // abpAjaxForm -> uses ajaxForm ------------------------------------------ - - if ($.fn.ajaxForm) { - $.fn.abpAjaxForm = function (userOptions) { - userOptions = userOptions || {}; - - var options = $.extend({}, $.fn.abpAjaxForm.defaults, userOptions); - - options.beforeSubmit = function () { - abp.ajax.blockUI(options); - userOptions.beforeSubmit && userOptions.beforeSubmit.apply(this, arguments); - }; - - options.success = function (data) { - abp.ajax.handleResponse(data, userOptions); - }; - - //TODO: Error? - - options.complete = function () { - abp.ajax.unblockUI(options); - userOptions.complete && userOptions.complete.apply(this, arguments); - }; - - return this.ajaxForm(options); - }; - - $.fn.abpAjaxForm.defaults = { - method: 'POST' - }; - } - abp.event.on('abp.dynamicScriptsInitialized', function () { abp.ajax.defaultError.message = abp.localization.abpWeb('DefaultError'); abp.ajax.defaultError.details = abp.localization.abpWeb('DefaultErrorDetail'); diff --git a/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorResponse.cs b/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorResponse.cs index b3dd56f962..6e5a32201d 100644 --- a/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorResponse.cs +++ b/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorResponse.cs @@ -4,11 +4,6 @@ { public RemoteServiceErrorInfo Error { get; set; } - /// - /// A special signature of ABP. - /// - public bool __abp { get; } = true; - public RemoteServiceErrorResponse(RemoteServiceErrorInfo error) { Error = error;