Mieux gerer l'indisponibilite temporaire de l'auth

This commit is contained in:
2026-04-14 19:42:56 +02:00
parent 1c5a003f7f
commit d0f9c76b26

View File

@@ -1,4 +1,5 @@
@using System.ComponentModel.DataAnnotations
@using System.Net
@using System.Net.Http.Json
@using System.Security.Claims
@using ChessCubing.App.Models.Auth
@@ -270,6 +271,12 @@
try
{
if (!await EnsureAuthServiceReadyAsync())
{
FormError = "Le service d'authentification demarre encore. Reessaie dans quelques secondes.";
return;
}
var response = await Http.PostAsJsonAsync(endpoint, payload);
if (!response.IsSuccessStatusCode)
{
@@ -292,6 +299,14 @@
ResetForms();
await RefreshAuthenticationStateAsync();
}
catch (HttpRequestException)
{
FormError = "Le service d'authentification est temporairement indisponible. Reessaie dans quelques secondes.";
}
catch (TaskCanceledException)
{
FormError = "La reponse du service d'authentification a pris trop de temps. Reessaie dans quelques secondes.";
}
catch
{
FormError = fallbackMessage;
@@ -396,7 +411,27 @@
{
}
return fallbackMessage;
return response.StatusCode switch
{
HttpStatusCode.BadGateway or HttpStatusCode.ServiceUnavailable or HttpStatusCode.GatewayTimeout
=> "Le service d'authentification demarre encore. Reessaie dans quelques secondes.",
HttpStatusCode.Conflict
=> "Ce nom d'utilisateur ou cet email existe deja.",
_ => fallbackMessage,
};
}
private async Task<bool> EnsureAuthServiceReadyAsync()
{
try
{
using var response = await Http.GetAsync("api/health");
return response.IsSuccessStatusCode;
}
catch
{
return false;
}
}
private static string BoolString(bool value)