Browse Source

Blazor exception handling refactor & test code.

pull/5791/head
Halil İbrahim Kalkan 6 years ago
parent
commit
975a0cfcad
  1. 2
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLogger.cs
  2. 7
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/IUserExceptionInformer.cs
  3. 34
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformer.cs
  4. 5
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/SimpleUiMessageService.cs
  5. 5
      framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiMessageService.cs
  6. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor
  7. 10
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor.cs

2
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLogger.cs

@ -39,7 +39,7 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling
return;
}
_userExceptionInformer.InformAsync(new UserExceptionInformerContext(exception));
_userExceptionInformer.Inform(new UserExceptionInformerContext(exception));
}
protected virtual void TryInitialize()

7
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/IUserExceptionInformer.cs

@ -1,10 +1,7 @@
using System;
using System.Threading.Tasks;
namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling
namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling
{
public interface IUserExceptionInformer
{
Task InformAsync(UserExceptionInformerContext context);
void Inform(UserExceptionInformerContext context);
}
}

34
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformer.cs

@ -1,5 +1,7 @@
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Volo.Abp.AspNetCore.ExceptionHandling;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http;
@ -9,19 +11,33 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling
{
public class UserExceptionInformer : IUserExceptionInformer, ITransientDependency
{
public ILogger<UserExceptionInformer> Logger { get; set; }
protected IUiMessageService MessageService { get; }
protected IExceptionToErrorInfoConverter ExceptionToErrorInfoConverter { get; }
public UserExceptionInformer(IUiMessageService messageService, IExceptionToErrorInfoConverter exceptionToErrorInfoConverter)
public UserExceptionInformer(
IUiMessageService messageService,
IExceptionToErrorInfoConverter exceptionToErrorInfoConverter)
{
MessageService = messageService;
ExceptionToErrorInfoConverter = exceptionToErrorInfoConverter;
Logger = NullLogger<UserExceptionInformer>.Instance;
}
public virtual async Task InformAsync(UserExceptionInformerContext context)
public void Inform(UserExceptionInformerContext context)
{
var errorInfo = GetErrorInfo(context);
await ShowErrorInfoAsync(errorInfo);
if (errorInfo.Details.IsNullOrEmpty())
{
Logger.LogInformation(errorInfo.Message + " - " + errorInfo.Details);
MessageService.ErrorAsync(errorInfo.Message);
}
else
{
Logger.LogInformation(errorInfo.Message);
MessageService.ErrorAsync(errorInfo.Details, errorInfo.Message);
}
}
protected virtual RemoteServiceErrorInfo GetErrorInfo(UserExceptionInformerContext context)
@ -33,17 +49,5 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling
return ExceptionToErrorInfoConverter.Convert(context.Exception, false);
}
protected virtual async Task ShowErrorInfoAsync(RemoteServiceErrorInfo errorInfo)
{
if (errorInfo.Details.IsNullOrEmpty())
{
await MessageService.ErrorAsync(errorInfo.Message);
}
else
{
await MessageService.ErrorAsync(errorInfo.Details, errorInfo.Message);
}
}
}
}

5
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageService.cs → framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/SimpleUiMessageService.cs

@ -5,12 +5,11 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Components.WebAssembly
{
//TODO: Implement with sweetalert in a new package
public class UiMessageService : IUiMessageService, ITransientDependency
public class SimpleUiMessageService : IUiMessageService, ITransientDependency
{
protected IJSRuntime JsRuntime { get; }
public UiMessageService(IJSRuntime jsRuntime)
public SimpleUiMessageService(IJSRuntime jsRuntime)
{
JsRuntime = jsRuntime;
}

5
framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiMessageService.cs

@ -64,6 +64,11 @@ namespace Volo.Abp.BlazoriseUI
var uiMessageOptions = CreateDefaultOptions();
options?.Invoke(uiMessageOptions);
if (MessageReceived == null)
{
Logger.LogWarning("MessageReceived was NULL...!!!!!!!!!!!! " + message);
}
MessageReceived?.Invoke(this, new UiMessageEventArgs(UiMessageType.Error, message, title, uiMessageOptions));
return Task.CompletedTask;

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor

@ -23,6 +23,8 @@
<i class="fa fa-sign-in-alt"></i> @L["Login"]
</a>
}
<Button Color="Color.Danger" Clicked="ThrowException">TEST EXCEPTION</Button>
</div>
<div class="my-3 text-center">

10
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor.cs

@ -1,7 +1,13 @@
namespace MyCompanyName.MyProjectName.Blazor.Pages
using System;
using Volo.Abp;
namespace MyCompanyName.MyProjectName.Blazor.Pages
{
public partial class Index
{
private void ThrowException()
{
throw new UserFriendlyException("Hey, there was a problem :(");
}
}
}

Loading…
Cancel
Save