From aa771ae1b28f8a001c71a7f07f7cfc811702ccdc Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Mon, 8 Jul 2024 21:43:19 +0200 Subject: [PATCH] Fix sync redirect (#74) --- src/AliasVault.WebApp/Main/Pages/MainBase.cs | 9 +++++---- src/AliasVault.WebApp/Main/Pages/Sync/Sync.razor | 13 +++++++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/AliasVault.WebApp/Main/Pages/MainBase.cs b/src/AliasVault.WebApp/Main/Pages/MainBase.cs index c8a8901df..33d44414e 100644 --- a/src/AliasVault.WebApp/Main/Pages/MainBase.cs +++ b/src/AliasVault.WebApp/Main/Pages/MainBase.cs @@ -21,6 +21,7 @@ using Microsoft.JSInterop; /// public class MainBase : OwningComponentBase { + private const string ReturnUrlKey = "returnUrl"; private bool _parametersInitialSet; /// @@ -96,7 +97,7 @@ public class MainBase : OwningComponentBase if (!DbService.GetState().CurrentState.IsInitialized()) { var currentUrl = NavigationManager.Uri; - await LocalStorage.SetItemAsync("returnUrl", currentUrl); + await LocalStorage.SetItemAsync(ReturnUrlKey, currentUrl); NavigationManager.NavigateTo("/sync"); while (true) @@ -124,7 +125,7 @@ public class MainBase : OwningComponentBase if (!DbService.GetState().CurrentState.IsInitialized()) { var currentUrl = NavigationManager.Uri; - await LocalStorage.SetItemAsync("returnUrl", currentUrl); + await LocalStorage.SetItemAsync(ReturnUrlKey, currentUrl); NavigationManager.NavigateTo("/sync"); while (true) @@ -178,13 +179,13 @@ public class MainBase : OwningComponentBase if (!AuthService.IsEncryptionKeySet()) { // If returnUrl is not set and current URL is not unlock page, set it to the current URL. - var localStorageReturnUrl = await LocalStorage.GetItemAsync("returnUrl"); + var localStorageReturnUrl = await LocalStorage.GetItemAsync(ReturnUrlKey); if (string.IsNullOrEmpty(localStorageReturnUrl)) { var currentUrl = NavigationManager.Uri; if (!currentUrl.Contains("unlock")) { - await LocalStorage.SetItemAsync("returnUrl", currentUrl); + await LocalStorage.SetItemAsync(ReturnUrlKey, currentUrl); } } diff --git a/src/AliasVault.WebApp/Main/Pages/Sync/Sync.razor b/src/AliasVault.WebApp/Main/Pages/Sync/Sync.razor index 4f55573fc..fecd42091 100644 --- a/src/AliasVault.WebApp/Main/Pages/Sync/Sync.razor +++ b/src/AliasVault.WebApp/Main/Pages/Sync/Sync.razor @@ -4,6 +4,7 @@ @using AliasVault.WebApp.Main.Pages.Sync.StatusMessages @inject ILocalStorageService LocalStorage @inject DbService DbService +@inject AuthService AuthService @inject NavigationManager NavigationManager Sync @@ -33,6 +34,7 @@ @code { + private const string ReturnUrlKey = "returnUrl"; private DbServiceState.DatabaseState CurrentDbState { get; set; } = new(); private const int MinimumLoadingTimeMs = 800; @@ -43,6 +45,13 @@ DbService.GetState().StateChanged += OnDatabaseStateChanged; CurrentDbState = DbService.GetState().CurrentState; + // Check that encryption key is set. If not, redirect to unlock screen. + if (!AuthService.IsEncryptionKeySet()) + { + await LocalStorage.SetItemAsync(ReturnUrlKey, NavigationManager.Uri); + NavigationManager.NavigateTo("/unlock"); + } + await CheckAndInitializeDatabase(); } @@ -98,10 +107,10 @@ private async Task RedirectBackToReturnUrl() { - var localStorageReturnUrl = await LocalStorage.GetItemAsync("returnUrl"); + var localStorageReturnUrl = await LocalStorage.GetItemAsync(ReturnUrlKey); if (!string.IsNullOrEmpty(localStorageReturnUrl) && localStorageReturnUrl != "/sync") { - await LocalStorage.RemoveItemAsync("returnUrl"); + await LocalStorage.RemoveItemAsync(ReturnUrlKey); NavigationManager.NavigateTo(localStorageReturnUrl); } else