53 lines
1.6 KiB
Plaintext
53 lines
1.6 KiB
Plaintext
@using System.Net
|
|
@using BlazorWebAssemblyVisaApiClient.Common.Exceptions
|
|
@using VisaApiClient
|
|
|
|
<CascadingValue Value="this">
|
|
<Modal @ref="modal">
|
|
<BodyTemplate>
|
|
@errorDetails
|
|
</BodyTemplate>
|
|
<FooterTemplate>
|
|
<Button Color="ButtonColor.Secondary" @onclick="modal.HideAsync">Okaaaay</Button>
|
|
</FooterTemplate>
|
|
</Modal>
|
|
@ChildContent
|
|
</CascadingValue>
|
|
|
|
@code
|
|
{
|
|
private Modal modal = null!;
|
|
private string errorDetails = null!;
|
|
|
|
[Parameter] public RenderFragment? ChildContent { get; set; }
|
|
|
|
[Inject] private NavigationManager Nav { get; set; } = null!;
|
|
|
|
public void Handle(Exception ex)
|
|
{
|
|
switch (ex)
|
|
{
|
|
case ApiException<ProblemDetails>
|
|
{
|
|
StatusCode: (int)HttpStatusCode.Unauthorized or (int)HttpStatusCode.Forbidden
|
|
} or NotLoggedInException:
|
|
Nav.NavigateTo("/");
|
|
modal.Title = "Authorization failed";
|
|
errorDetails = "You are not authorized or your authorization is expired";
|
|
break;
|
|
|
|
case ApiException<ProblemDetails> problemDetails:
|
|
modal.Title = problemDetails.Result.Title!;
|
|
errorDetails = problemDetails.Result.Detail!;
|
|
modal.ShowAsync();
|
|
break;
|
|
|
|
default:
|
|
modal.Title = "Something went wrong";
|
|
errorDetails = "Please, text an email with your problem definition on nasrudin@mail.ru";
|
|
modal.ShowAsync();
|
|
break;
|
|
}
|
|
}
|
|
}
|