LANCommander/LANCommander.UI/Components/ErrorHandler/ErrorHandler.razor

49 lines
1.3 KiB
Text
Raw Normal View History

@using LANCommander.UI.Providers
@using Microsoft.JSInterop
@inject IJSRuntime JS
2025-09-06 13:09:47 -05:00
@namespace LANCommander.UI.Components
<ErrorBoundary>
<ChildContent>
@Body
</ChildContent>
<ErrorContent>
<Result Status="ResultStatus.Error"
Title="@Title"
SubTitle="@_randomQuip"
Class="crash-error">
<Extra>
@if (Extra is not null)
{
@Extra
}
<Button OnClick="() => CopyError(context)">Copy Error</Button>
</Extra>
<ChildContent>
<code>
@context.Message
@context.StackTrace
</code>
</ChildContent>
</Result>
</ErrorContent>
</ErrorBoundary>
@code {
[Parameter] public string? Title { get; set; }
[Parameter] public RenderFragment? Body { get; set; }
[Parameter] public RenderFragment? Extra { get; set; }
string _randomQuip = "";
protected override void OnInitialized()
{
_randomQuip = QuipProvider.GetCrashQuip();
}
async Task CopyError(Exception ex)
{
await JS.InvokeVoidAsync("navigator.clipboard.writeText", ex.Message + "\n" + ex.StackTrace);
}
}