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);
}
}
}