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:
@@ -107,6 +107,10 @@
|
||||
{
|
||||
<span class="username-status username-taken">✗ Username is already taken</span>
|
||||
}
|
||||
else if (_usernameCheckState == UsernameCheckState.Error)
|
||||
{
|
||||
<span class="username-status username-error">⚠ Could not check availability — you can still submit</span>
|
||||
}
|
||||
<ValidationMessage For="() => _application.DesiredUsername" />
|
||||
</div>
|
||||
|
||||
@@ -209,7 +213,7 @@
|
||||
{
|
||||
<div class="dev-error">@_errorMessage</div>
|
||||
}
|
||||
<button type="submit" class="dev-btn dev-btn-primary" disabled="@_submitting">
|
||||
<button type="submit" class="dev-btn dev-btn-primary" disabled="@(_submitting || _usernameCheckState == UsernameCheckState.Taken)">
|
||||
@if (_submitting)
|
||||
{
|
||||
<span class="btn-spinner"></span>
|
||||
@@ -240,7 +244,7 @@
|
||||
|
||||
private readonly string[] _availablePlatforms = { "Windows", "macOS", "Linux", "Android", "iOS", "Other" };
|
||||
|
||||
private enum UsernameCheckState { None, Checking, Available, Taken }
|
||||
private enum UsernameCheckState { None, Checking, Available, Taken, Error }
|
||||
|
||||
private void SelectRole(ApplicationRole role)
|
||||
{
|
||||
@@ -279,7 +283,12 @@
|
||||
|
||||
if (!token.IsCancellationRequested)
|
||||
{
|
||||
_usernameCheckState = available ? UsernameCheckState.Available : UsernameCheckState.Taken;
|
||||
_usernameCheckState = available switch
|
||||
{
|
||||
true => UsernameCheckState.Available,
|
||||
false => UsernameCheckState.Taken,
|
||||
null => UsernameCheckState.Error
|
||||
};
|
||||
StateHasChanged();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user