@using System.Net
@using BlazorWebAssemblyVisaApiClient.Common.Exceptions
@using VisaApiClient
    
        
            @errorDetails
        
        
            
        
    
    @ChildContent
@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
            {
                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";
                modal.ShowAsync();
                break;
            case ApiException 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;
        }
    }
}