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
-