diff --git a/windows/welcome/src/SilverOS.Welcome.App/Components/Routes.razor b/windows/welcome/src/SilverOS.Welcome.App/Components/Routes.razor index 7100db6..a466c0f 100644 --- a/windows/welcome/src/SilverOS.Welcome.App/Components/Routes.razor +++ b/windows/welcome/src/SilverOS.Welcome.App/Components/Routes.razor @@ -23,7 +23,11 @@ } else if (_error is not null) { -

@_error

+
+

Couldn't load device profiles. Please reinstall SilverOS.

+

@_error

+ +
} else { @@ -83,12 +87,17 @@ private bool CanGoNext => _currentStep switch { + 1 => State.Flavour is not null, 2 => _accountStep?.IsValid ?? false, _ => true }; - protected override Task OnInitializedAsync() + protected override Task OnInitializedAsync() => LoadFlavours(); + + private Task LoadFlavours() { + _error = null; + _loading = true; try { _flavours = FlavourLoader.Load(FlavoursDir); diff --git a/windows/welcome/src/SilverOS.Welcome.App/Components/Steps/AccountStep.razor b/windows/welcome/src/SilverOS.Welcome.App/Components/Steps/AccountStep.razor index d6676f8..1553884 100644 --- a/windows/welcome/src/SilverOS.Welcome.App/Components/Steps/AccountStep.razor +++ b/windows/welcome/src/SilverOS.Welcome.App/Components/Steps/AccountStep.razor @@ -9,7 +9,7 @@ - @if (_errors.TryGetValue("username", out var ue)) + @if (_touched.Contains("username") && _errors.TryGetValue("username", out var ue)) { @ue } @@ -20,7 +20,7 @@ - @if (_errors.TryGetValue("password", out var pe)) + @if (_touched.Contains("password") && _errors.TryGetValue("password", out var pe)) { @pe } @@ -31,7 +31,7 @@ - @if (_errors.TryGetValue("adminpassword", out var ae)) + @if (_touched.Contains("adminpassword") && _errors.TryGetValue("adminpassword", out var ae)) { @ae } @@ -42,7 +42,7 @@ - @if (_errors.TryGetValue("bitlockerpin", out var be)) + @if (_touched.Contains("bitlockerpin") && _errors.TryGetValue("bitlockerpin", out var be)) { @be } @@ -51,16 +51,17 @@ @code { private readonly Dictionary _errors = new(); + private readonly HashSet _touched = new(); /// True when all fields are valid. Used by the wizard host to gate Next. public bool IsValid { get; private set; } protected override void OnInitialized() => Validate(); - private void OnUsernameInput(ChangeEventArgs e) { State.Username = e.Value?.ToString() ?? ""; Validate(); } - private void OnPasswordInput(ChangeEventArgs e) { State.Password = e.Value?.ToString() ?? ""; Validate(); } - private void OnAdminPasswordInput(ChangeEventArgs e) { State.AdminPassword = e.Value?.ToString() ?? ""; Validate(); } - private void OnPinInput(ChangeEventArgs e) { State.BitLockerPin = e.Value?.ToString() ?? ""; Validate(); } + private void OnUsernameInput(ChangeEventArgs e) { State.Username = e.Value?.ToString() ?? ""; _touched.Add("username"); Validate(); } + private void OnPasswordInput(ChangeEventArgs e) { State.Password = e.Value?.ToString() ?? ""; _touched.Add("password"); Validate(); } + private void OnAdminPasswordInput(ChangeEventArgs e) { State.AdminPassword = e.Value?.ToString() ?? ""; _touched.Add("adminpassword"); Validate(); } + private void OnPinInput(ChangeEventArgs e) { State.BitLockerPin = e.Value?.ToString() ?? ""; _touched.Add("bitlockerpin"); Validate(); } void Validate() { diff --git a/windows/welcome/src/SilverOS.Welcome.App/Components/Steps/WelcomeStep.razor b/windows/welcome/src/SilverOS.Welcome.App/Components/Steps/WelcomeStep.razor index 1ef46cc..a351341 100644 --- a/windows/welcome/src/SilverOS.Welcome.App/Components/Steps/WelcomeStep.razor +++ b/windows/welcome/src/SilverOS.Welcome.App/Components/Steps/WelcomeStep.razor @@ -1,5 +1,3 @@ -@inject WizardState State -

Welcome to SilverOS