diff --git a/apps/server/AliasVault.Client/Auth/Pages/Setup/Components/CreatingStep.razor b/apps/server/AliasVault.Client/Auth/Pages/Setup/Components/CreatingStep.razor index f2f4b72e3..90b9c6bf9 100644 --- a/apps/server/AliasVault.Client/Auth/Pages/Setup/Components/CreatingStep.razor +++ b/apps/server/AliasVault.Client/Auth/Pages/Setup/Components/CreatingStep.razor @@ -52,18 +52,8 @@ if (success) { - // After successful registration, persist the current language to vault settings - try - { - var currentLanguage = await LanguageService.GetCurrentLanguageAsync(); - await DbService.Settings.SetSettingAsync("AppLanguage", currentLanguage); - } - catch - { - // Ignore errors in language setting, don't fail the registration process - } - NavigationManager.NavigateTo("/"); + return; } else { diff --git a/apps/server/AliasVault.Client/Auth/Pages/Setup/Setup.razor b/apps/server/AliasVault.Client/Auth/Pages/Setup/Setup.razor index 85453cb56..2aae114e8 100644 --- a/apps/server/AliasVault.Client/Auth/Pages/Setup/Setup.razor +++ b/apps/server/AliasVault.Client/Auth/Pages/Setup/Setup.razor @@ -1,11 +1,15 @@ @page "/user/setup" @using AliasVault.Client.Auth.Pages.Setup.Components +@using AliasVault.Client.Shared.Components @using Microsoft.Extensions.Localization @inherits AliasVault.Client.Auth.Pages.Base.LoginBase @layout Auth.Layout.EmptyLayout @attribute [AllowAnonymous]
+
+ +
diff --git a/apps/server/AliasVault.Client/Main/Pages/Sync/StatusMessages/Creating.razor b/apps/server/AliasVault.Client/Main/Pages/Sync/StatusMessages/Creating.razor index 6a6bebc03..009282638 100644 --- a/apps/server/AliasVault.Client/Main/Pages/Sync/StatusMessages/Creating.razor +++ b/apps/server/AliasVault.Client/Main/Pages/Sync/StatusMessages/Creating.razor @@ -26,6 +26,7 @@ @code { private IStringLocalizer Localizer => LocalizerFactory.Create("Pages.Main.Sync.StatusMessages.Creating", "AliasVault.Client"); private string ErrorMessage { get; set; } = string.Empty; + private bool IsMigrating { get; set; } = false; /// protected override async Task OnInitializedAsync() @@ -56,16 +57,17 @@ // Migrate (create) the database. if (await DbService.CreateNewVaultAsync()) { - // Initialize vault settings with user's browser language preference - await InitializeVaultSettings(); - - // Save the database to the server. - if (await DbService.SaveDatabaseAsync()) + try { + // Initialize vault settings with user's browser language preference. This also automatically + // saves the new empty database to the server. + await InitializeVaultSettings(); + // Migration successful, update state which will trigger the status message UI to refresh and redirect user. DbService.GetState().UpdateState(DbServiceState.DatabaseStatus.Ready); + return; } - else + catch { // Migration failed ErrorMessage = Localizer["SaveFailedError"]; @@ -87,6 +89,7 @@ { try { + Console.WriteLine("Initializing vault settings with user preferences detected from the browser."); // Get the current browser language preference var browserLanguage = await LanguageService.GetBrowserLanguageAsync(); diff --git a/apps/server/AliasVault.Client/Services/Database/DbService.cs b/apps/server/AliasVault.Client/Services/Database/DbService.cs index f0cf6b7aa..1dffdfc0a 100644 --- a/apps/server/AliasVault.Client/Services/Database/DbService.cs +++ b/apps/server/AliasVault.Client/Services/Database/DbService.cs @@ -329,6 +329,10 @@ public sealed class DbService : IDisposable { await _dbContext.Database.ExecuteSqlRawAsync(sqlCommand); } + + // Init settings service. + _isSuccessfullyInitialized = true; + await _settingsService.InitializeAsync(this); } catch (Exception ex) { diff --git a/apps/server/AliasVault.Client/Services/SettingsService.cs b/apps/server/AliasVault.Client/Services/SettingsService.cs index cf4cbaa03..2238f6b80 100644 --- a/apps/server/AliasVault.Client/Services/SettingsService.cs +++ b/apps/server/AliasVault.Client/Services/SettingsService.cs @@ -330,6 +330,12 @@ public sealed class SettingsService /// Task. private async Task SetSettingAsync(string key, string value) { + // Only update if the value has changed. + if (_settings.GetValueOrDefault(key) == value) + { + return; + } + var db = await _dbService!.GetDbContextAsync(); var setting = await db.Settings.FindAsync(key); if (setting == null) diff --git a/apps/server/Tests/AliasVault.E2ETests/Common/ClientPlaywrightTest.cs b/apps/server/Tests/AliasVault.E2ETests/Common/ClientPlaywrightTest.cs index 68231ac5e..50cdb6721 100644 --- a/apps/server/Tests/AliasVault.E2ETests/Common/ClientPlaywrightTest.cs +++ b/apps/server/Tests/AliasVault.E2ETests/Common/ClientPlaywrightTest.cs @@ -403,9 +403,6 @@ public class ClientPlaywrightTest : PlaywrightTest if (checkForSuccess) { await WaitForUrlAsync("welcome**", WelcomeMessage); - - // Wait for 100ms as without this the welcome redirect sometimes is not fully awaited and is triggered again. - await Task.Delay(100); } } }