From a1d7baf81321c29546d9b7df3a4939f3b673a351 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 11 Mar 2025 17:57:37 +0800 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E6=8E=A5=E7=AE=A1=E5=90=8E=E5=86=85=E9=83=A8=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E5=BC=B9=E5=87=BA=20Toast?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BootstrapBlazorErrorBoundary.cs | 24 ++++++++----------- .../Components/ErrorLogger/ErrorLogger.cs | 3 ++- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/BootstrapBlazor/Components/ErrorLogger/BootstrapBlazorErrorBoundary.cs b/src/BootstrapBlazor/Components/ErrorLogger/BootstrapBlazorErrorBoundary.cs index f814abcdfd0..40071f3316f 100644 --- a/src/BootstrapBlazor/Components/ErrorLogger/BootstrapBlazorErrorBoundary.cs +++ b/src/BootstrapBlazor/Components/ErrorLogger/BootstrapBlazorErrorBoundary.cs @@ -61,16 +61,14 @@ protected override async Task OnErrorAsync(Exception exception) if (OnErrorHandleAsync != null) { await OnErrorHandleAsync(Logger, exception); + return; } - else - { - if (ShowToast) - { - await ToastService.Error(ToastTitle, exception.Message); - } - Logger.LogError(exception, "{BootstrapBlazorErrorBoundary} {OnErrorAsync} log this error occurred at {Page}", nameof(BootstrapBlazorErrorBoundary), nameof(OnErrorAsync), NavigationManager.Uri); + if (ShowToast) + { + await ToastService.Error(ToastTitle, exception.Message); } + Logger.LogError(exception, "{BootstrapBlazorErrorBoundary} {OnErrorAsync} log this error occurred at {Page}", nameof(BootstrapBlazorErrorBoundary), nameof(OnErrorAsync), NavigationManager.Uri); } /// @@ -126,16 +124,14 @@ private MarkupString GetErrorContentMarkupString(Exception ex) /// public async Task RenderException(Exception exception, IHandlerException? handler) { - await OnErrorAsync(exception); - if (handler != null) { await handler.HandlerException(exception, ExceptionContent); + return; } - else - { - _exception = exception; - StateHasChanged(); - } + + await OnErrorAsync(exception); + _exception = exception; + StateHasChanged(); } } diff --git a/src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs b/src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs index 8905116bf76..2a954f2c909 100644 --- a/src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs +++ b/src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs @@ -56,7 +56,8 @@ public class ErrorLogger : ComponentBase, IErrorLogger [Parameter] public RenderFragment? ErrorContent { get; set; } - private BootstrapBlazorErrorBoundary _errorBoundary = default!; + [NotNull] + private BootstrapBlazorErrorBoundary? _errorBoundary = default; /// /// From ce3009daa2cb3fb53f81e02c3c16d5ea4193337c Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 11 Mar 2025 18:20:36 +0800 Subject: [PATCH 2/2] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTest/Components/ErrorHandlerTest.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/UnitTest/Components/ErrorHandlerTest.cs b/test/UnitTest/Components/ErrorHandlerTest.cs index d48db6ccdc7..d604b06e228 100644 --- a/test/UnitTest/Components/ErrorHandlerTest.cs +++ b/test/UnitTest/Components/ErrorHandlerTest.cs @@ -30,13 +30,31 @@ await cut.InvokeAsync(() => dialog.Show(new DialogOption() // 关闭弹窗 var btn = cut.Find(".modal-header .btn-close"); await cut.InvokeAsync(() => btn.Click()); + } + [Fact] + public async Task ShowToast_Ok() + { + var cut = Context.RenderComponent(pb => + { + pb.AddChildContent(); + }); + var errorButton = cut.Find(".btn-error"); + await cut.InvokeAsync(() => errorButton.Click()); cut.Contains("
test error logger
"); // 关闭 Toast var toast = cut.FindComponent().Instance; await cut.InvokeAsync(() => toast.Close()); cut.DoesNotContain("
test error logger
"); + + cut.SetParametersAndRender(pb => + { + pb.Add(a => a.ShowToast, false); + }); + errorButton = cut.Find(".btn-error"); + await cut.InvokeAsync(() => errorButton.Click()); + cut.DoesNotContain("
test error logger
"); } private class MockDialogTest : ComponentBase