fix(developers): distinguish API errors from taken usernames in availability check
All checks were successful
Build and Deploy / deploy (push) Successful in 40s
All checks were successful
Build and Deploy / deploy (push) Successful in 40s
CheckUsernameAsync returned false (taken) on any API failure, making every username appear taken when SilverDESK was unreachable. Now returns nullable bool so errors show a warning instead of blocking submission. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -17,21 +17,30 @@ public class DeveloperApplicationService
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public async Task<bool> CheckUsernameAsync(string username)
|
||||
/// <summary>
|
||||
/// Checks username availability. Returns: true = available, false = taken, null = error/unknown.
|
||||
/// </summary>
|
||||
public async Task<bool?> CheckUsernameAsync(string username)
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await _httpClient.GetAsync($"/api/auth/check-username/{Uri.EscapeDataString(username)}");
|
||||
if (!response.IsSuccessStatusCode)
|
||||
return false;
|
||||
{
|
||||
_logger.LogWarning("Username check returned {StatusCode} for {Username}", response.StatusCode, username);
|
||||
return null;
|
||||
}
|
||||
|
||||
var result = await response.Content.ReadFromJsonAsync<JsonElement>();
|
||||
return result.TryGetProperty("available", out var available) && available.GetBoolean();
|
||||
if (result.TryGetProperty("available", out var available))
|
||||
return available.GetBoolean();
|
||||
|
||||
return null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Error checking username availability for {Username}", username);
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user