Skip to content

Commit f81d400

Browse files
authored
feat(IErrorLogger): redesign parameter data type (#6132)
* refactor: 更改 IErrorLogger 接口 * refactor: 改造 Layout 组件 * test: 更新单元测试
1 parent 6f83053 commit f81d400

File tree

5 files changed

+18
-17
lines changed

5 files changed

+18
-17
lines changed

src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ public class ErrorLogger : ComponentBase, IErrorLogger
2222
/// <inheritdoc/>
2323
/// </summary>
2424
[Parameter]
25-
public bool EnableErrorLogger { get; set; } = true;
25+
public bool? EnableErrorLogger { get; set; }
2626

2727
/// <summary>
2828
/// <inheritdoc/>
2929
/// </summary>
3030
[Parameter]
31-
public bool ShowToast { get; set; } = true;
31+
public bool? ShowToast { get; set; }
3232

3333
/// <summary>
3434
/// <inheritdoc/>
@@ -62,9 +62,17 @@ public class ErrorLogger : ComponentBase, IErrorLogger
6262
[Parameter]
6363
public Func<ErrorLogger, Task>? OnInitializedCallback { get; set; }
6464

65+
[Inject]
66+
[NotNull]
67+
private IOptionsMonitor<BootstrapBlazorOptions>? Options { get; set; }
68+
6569
[NotNull]
6670
private BootstrapBlazorErrorBoundary? _errorBoundary = default;
6771

72+
private bool _enableErrorLogger => EnableErrorLogger ?? Options.CurrentValue.EnableErrorLogger;
73+
74+
private bool _showToast => ShowToast ?? Options.CurrentValue.ShowErrorLoggerToast;
75+
6876
/// <summary>
6977
/// <inheritdoc/>
7078
/// </summary>
@@ -102,13 +110,13 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
102110
builder.CloseComponent();
103111
}
104112

105-
private RenderFragment? RenderContent => EnableErrorLogger ? RenderError : ChildContent;
113+
private RenderFragment? RenderContent => _enableErrorLogger ? RenderError : ChildContent;
106114

107115
private RenderFragment RenderError => builder =>
108116
{
109117
builder.OpenComponent<BootstrapBlazorErrorBoundary>(0);
110118
builder.AddAttribute(1, nameof(BootstrapBlazorErrorBoundary.OnErrorHandleAsync), OnErrorHandleAsync);
111-
builder.AddAttribute(2, nameof(BootstrapBlazorErrorBoundary.ShowToast), ShowToast);
119+
builder.AddAttribute(2, nameof(BootstrapBlazorErrorBoundary.ShowToast), _showToast);
112120
builder.AddAttribute(3, nameof(BootstrapBlazorErrorBoundary.ToastTitle), ToastTitle);
113121
builder.AddAttribute(4, nameof(BootstrapBlazorErrorBoundary.ErrorContent), ErrorContent);
114122
builder.AddAttribute(5, nameof(BootstrapBlazorErrorBoundary.ChildContent), ChildContent);

src/BootstrapBlazor/Components/ErrorLogger/IErrorLogger.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ namespace BootstrapBlazor.Components;
1111
public interface IErrorLogger
1212
{
1313
/// <summary>
14-
/// 获得/设置 是否开启全局异常捕获 默认 true
14+
/// 获得/设置 是否开启全局异常捕获 默认 null 使用全局配置 <see cref="BootstrapBlazorOptions.EnableErrorLogger"/> 值
1515
/// </summary>
16-
bool EnableErrorLogger { get; set; }
16+
bool? EnableErrorLogger { get; set; }
1717

1818
/// <summary>
1919
/// 获得/设置 自定义 Error 处理方法 默认 null
@@ -23,9 +23,9 @@ public interface IErrorLogger
2323
Task HandlerExceptionAsync(Exception ex);
2424

2525
/// <summary>
26-
/// 获得 是否显示 Error 提示弹窗 默认 true 显示
26+
/// 获得 是否显示 Error 提示弹窗 默认 null 使用全局配置 <see cref="BootstrapBlazorOptions.ShowErrorLoggerToast"/> 值
2727
/// </summary>
28-
bool ShowToast { get; }
28+
bool? ShowToast { get; }
2929

3030
/// <summary>
3131
/// 获得 Error Toast 弹窗标题 默认读取资源文件内容

src/BootstrapBlazor/Components/Layout/Layout.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@
126126
}
127127
else
128128
{
129-
<ErrorLogger EnableErrorLogger="@_enableErrorLoggerValue" ShowToast="@_showToast" ToastTitle="@ErrorLoggerToastTitle"
129+
<ErrorLogger EnableErrorLogger="@EnableErrorLogger" ShowToast="@ShowErrorLoggerToast" ToastTitle="@ErrorLoggerToastTitle"
130130
OnErrorHandleAsync="OnErrorHandleAsync" OnInitializedCallback="OnErrorLoggerInitialized">
131131
@HandlerMain()
132132
</ErrorLogger>

src/BootstrapBlazor/Components/Layout/Layout.razor.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -483,10 +483,6 @@ public partial class Layout : IHandlerException, ITabHeader
483483
[CascadingParameter]
484484
private Task<AuthenticationState>? AuthenticationStateTask { get; set; }
485485

486-
[Inject]
487-
[NotNull]
488-
private IOptionsMonitor<BootstrapBlazorOptions>? Options { get; set; }
489-
490486
[Inject, NotNull]
491487
private IServiceProvider? ServiceProvider { get; set; }
492488

@@ -499,10 +495,6 @@ public partial class Layout : IHandlerException, ITabHeader
499495

500496
private ITabHeader? TabHeader => ShowTabInHeader ? this : null;
501497

502-
private bool _enableErrorLoggerValue => EnableErrorLogger ?? Options.CurrentValue.EnableErrorLogger;
503-
504-
private bool _showToast => ShowErrorLoggerToast ?? Options.CurrentValue.ShowErrorLoggerToast;
505-
506498
/// <summary>
507499
/// <inheritdoc/>
508500
/// </summary>

test/UnitTest/Components/LayoutTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,7 @@ public void IHandlerException_Ok()
535535
pb.Add(a => a.EnableErrorLogger, true);
536536
pb.AddChildContent<Layout>(pb =>
537537
{
538+
pb.Add(a => a.EnableErrorLogger, true);
538539
// 按钮触发异常
539540
pb.Add(a => a.Main, new RenderFragment(builder =>
540541
{

0 commit comments

Comments
 (0)