Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ public class ErrorLogger : ComponentBase, IErrorLogger
/// <inheritdoc/>
/// </summary>
[Parameter]
public bool EnableErrorLogger { get; set; } = true;
public bool? EnableErrorLogger { get; set; }

/// <summary>
/// <inheritdoc/>
/// </summary>
[Parameter]
public bool ShowToast { get; set; } = true;
public bool? ShowToast { get; set; }

/// <summary>
/// <inheritdoc/>
Expand Down Expand Up @@ -62,9 +62,17 @@ public class ErrorLogger : ComponentBase, IErrorLogger
[Parameter]
public Func<ErrorLogger, Task>? OnInitializedCallback { get; set; }

[Inject]
[NotNull]
private IOptionsMonitor<BootstrapBlazorOptions>? Options { get; set; }
Comment on lines +65 to +67
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: Consider making the injected Options property non-nullable

You can remove the '?' from IOptionsMonitor since [NotNull] ensures it won't be null.

Suggested change
[Inject]
[NotNull]
private IOptionsMonitor<BootstrapBlazorOptions>? Options { get; set; }
[Inject]
[NotNull]
private IOptionsMonitor<BootstrapBlazorOptions> Options { get; set; }


[NotNull]
private BootstrapBlazorErrorBoundary? _errorBoundary = default;

private bool _enableErrorLogger => EnableErrorLogger ?? Options.CurrentValue.EnableErrorLogger;

private bool _showToast => ShowToast ?? Options.CurrentValue.ShowErrorLoggerToast;

/// <summary>
/// <inheritdoc/>
/// </summary>
Expand Down Expand Up @@ -102,13 +110,13 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
builder.CloseComponent();
}

private RenderFragment? RenderContent => EnableErrorLogger ? RenderError : ChildContent;
private RenderFragment? RenderContent => _enableErrorLogger ? RenderError : ChildContent;

private RenderFragment RenderError => builder =>
{
builder.OpenComponent<BootstrapBlazorErrorBoundary>(0);
builder.AddAttribute(1, nameof(BootstrapBlazorErrorBoundary.OnErrorHandleAsync), OnErrorHandleAsync);
builder.AddAttribute(2, nameof(BootstrapBlazorErrorBoundary.ShowToast), ShowToast);
builder.AddAttribute(2, nameof(BootstrapBlazorErrorBoundary.ShowToast), _showToast);
builder.AddAttribute(3, nameof(BootstrapBlazorErrorBoundary.ToastTitle), ToastTitle);
builder.AddAttribute(4, nameof(BootstrapBlazorErrorBoundary.ErrorContent), ErrorContent);
builder.AddAttribute(5, nameof(BootstrapBlazorErrorBoundary.ChildContent), ChildContent);
Expand Down
8 changes: 4 additions & 4 deletions src/BootstrapBlazor/Components/ErrorLogger/IErrorLogger.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ namespace BootstrapBlazor.Components;
public interface IErrorLogger
{
/// <summary>
/// 获得/设置 是否开启全局异常捕获 默认 true
/// 获得/设置 是否开启全局异常捕获 默认 null 使用全局配置 <see cref="BootstrapBlazorOptions.EnableErrorLogger"/> 值
/// </summary>
bool EnableErrorLogger { get; set; }
bool? EnableErrorLogger { get; set; }

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

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

/// <summary>
/// 获得 Error Toast 弹窗标题 默认读取资源文件内容
Expand Down
2 changes: 1 addition & 1 deletion src/BootstrapBlazor/Components/Layout/Layout.razor
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@
}
else
{
<ErrorLogger EnableErrorLogger="@_enableErrorLoggerValue" ShowToast="@_showToast" ToastTitle="@ErrorLoggerToastTitle"
<ErrorLogger EnableErrorLogger="@EnableErrorLogger" ShowToast="@ShowErrorLoggerToast" ToastTitle="@ErrorLoggerToastTitle"
OnErrorHandleAsync="OnErrorHandleAsync" OnInitializedCallback="OnErrorLoggerInitialized">
@HandlerMain()
</ErrorLogger>
Expand Down
8 changes: 0 additions & 8 deletions src/BootstrapBlazor/Components/Layout/Layout.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -483,10 +483,6 @@ public partial class Layout : IHandlerException, ITabHeader
[CascadingParameter]
private Task<AuthenticationState>? AuthenticationStateTask { get; set; }

[Inject]
[NotNull]
private IOptionsMonitor<BootstrapBlazorOptions>? Options { get; set; }

[Inject, NotNull]
private IServiceProvider? ServiceProvider { get; set; }

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

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

private bool _enableErrorLoggerValue => EnableErrorLogger ?? Options.CurrentValue.EnableErrorLogger;

private bool _showToast => ShowErrorLoggerToast ?? Options.CurrentValue.ShowErrorLoggerToast;

/// <summary>
/// <inheritdoc/>
/// </summary>
Expand Down
1 change: 1 addition & 0 deletions test/UnitTest/Components/LayoutTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,7 @@ public void IHandlerException_Ok()
pb.Add(a => a.EnableErrorLogger, true);
pb.AddChildContent<Layout>(pb =>
{
pb.Add(a => a.EnableErrorLogger, true);
// 按钮触发异常
pb.Add(a => a.Main, new RenderFragment(builder =>
{
Expand Down