From 02282313af7bb88f4f0f0d5f63b40ac790b4721a Mon Sep 17 00:00:00 2001 From: Ivan Yaremenchuk Date: Sun, 3 Apr 2022 22:30:06 +0200 Subject: [PATCH] Fix navigation --- .../Extensions/NavigationManagerExtensions.cs | 20 +++++++++++++++++++ NftFaucet/Models/NavigationWrapper.cs | 5 +++-- NftFaucet/Pages/ConnectMetamask.razor.cs | 5 +++-- NftFaucet/Pages/Index.razor.cs | 3 ++- NftFaucet/Pages/Step1Page.razor.cs | 3 ++- NftFaucet/Pages/Step2Page.razor.cs | 2 +- NftFaucet/Pages/Step3Page.razor.cs | 3 ++- NftFaucet/Pages/Step4Page.razor.cs | 5 +++-- 8 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 NftFaucet/Extensions/NavigationManagerExtensions.cs diff --git a/NftFaucet/Extensions/NavigationManagerExtensions.cs b/NftFaucet/Extensions/NavigationManagerExtensions.cs new file mode 100644 index 0000000..a912240 --- /dev/null +++ b/NftFaucet/Extensions/NavigationManagerExtensions.cs @@ -0,0 +1,20 @@ +using Microsoft.AspNetCore.Components; + +namespace NftFaucet.Extensions; + +public static class NavigationManagerExtensions +{ + public static void NavigateToRelative(this NavigationManager uriHelper, string relativePath) + { + var newUri = uriHelper.BaseUri; + if (!newUri.EndsWith("/")) + newUri += "/"; + + if (relativePath.StartsWith("/")) + relativePath = relativePath.Substring(1); + + newUri += relativePath; + + uriHelper.NavigateTo(newUri); + } +} diff --git a/NftFaucet/Models/NavigationWrapper.cs b/NftFaucet/Models/NavigationWrapper.cs index da748eb..cade3fc 100644 --- a/NftFaucet/Models/NavigationWrapper.cs +++ b/NftFaucet/Models/NavigationWrapper.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Components; +using NftFaucet.Extensions; namespace NftFaucet.Models; @@ -59,7 +60,7 @@ public class NavigationWrapper var previousStep = CurrentStep - 1; _beforeGoBack = null; _beforeGoForward = null; - _uriHelper.NavigateTo("/step" + previousStep); + _uriHelper.NavigateToRelative("/step" + previousStep); } public async Task GoForward() @@ -74,6 +75,6 @@ public class NavigationWrapper var nextStep = CurrentStep + 1; _beforeGoBack = null; _beforeGoForward = null; - _uriHelper.NavigateTo("/step" + nextStep); + _uriHelper.NavigateToRelative("/step" + nextStep); } } diff --git a/NftFaucet/Pages/ConnectMetamask.razor.cs b/NftFaucet/Pages/ConnectMetamask.razor.cs index dd1ee45..53faff4 100644 --- a/NftFaucet/Pages/ConnectMetamask.razor.cs +++ b/NftFaucet/Pages/ConnectMetamask.razor.cs @@ -1,4 +1,5 @@ using NftFaucet.Components; +using NftFaucet.Extensions; namespace NftFaucet.Pages; @@ -9,7 +10,7 @@ public class ConnectMetamaskComponent : BasicComponent if (await Metamask.IsConnected()) { await Metamask.RefreshAddress(); - UriHelper.NavigateTo("/"); + UriHelper.NavigateToRelative("/"); } } @@ -18,7 +19,7 @@ public class ConnectMetamaskComponent : BasicComponent var isConnected = await Metamask.Connect(); if (isConnected) { - UriHelper.NavigateTo("/"); + UriHelper.NavigateToRelative("/"); } } } diff --git a/NftFaucet/Pages/Index.razor.cs b/NftFaucet/Pages/Index.razor.cs index 3933e9c..d896c53 100644 --- a/NftFaucet/Pages/Index.razor.cs +++ b/NftFaucet/Pages/Index.razor.cs @@ -1,4 +1,5 @@ using NftFaucet.Components; +using NftFaucet.Extensions; namespace NftFaucet.Pages; @@ -6,6 +7,6 @@ public class IndexComponent : BasicComponent { protected override async Task OnInitializedAsync() { - UriHelper.NavigateTo(await Metamask.IsReady() ? "/step1" : "/connect-metamask"); + UriHelper.NavigateToRelative(await Metamask.IsReady() ? "/step1" : "/connect-metamask"); } } diff --git a/NftFaucet/Pages/Step1Page.razor.cs b/NftFaucet/Pages/Step1Page.razor.cs index 4a61a86..f5c08a9 100644 --- a/NftFaucet/Pages/Step1Page.razor.cs +++ b/NftFaucet/Pages/Step1Page.razor.cs @@ -2,6 +2,7 @@ using AntDesign; using Microsoft.AspNetCore.Components; using NftFaucet.Components; using NftFaucet.Constants; +using NftFaucet.Extensions; using NftFaucet.Models.Enums; namespace NftFaucet.Pages; @@ -24,7 +25,7 @@ public class Step1Component : BasicComponent protected override async Task OnInitializedAsync() { if (!await AppState.Metamask.IsReady()) - UriHelper.NavigateTo("/"); + UriHelper.NavigateToRelative("/"); AppState.Navigation.SetForwardHandler(ForwardHandler); } diff --git a/NftFaucet/Pages/Step2Page.razor.cs b/NftFaucet/Pages/Step2Page.razor.cs index ff20dce..ab30dab 100644 --- a/NftFaucet/Pages/Step2Page.razor.cs +++ b/NftFaucet/Pages/Step2Page.razor.cs @@ -26,7 +26,7 @@ public class Step2Component : BasicComponent protected override async Task OnInitializedAsync() { if (!await AppState.Metamask.IsReady() || AppState.Storage.IpfsImageUrl == null) - UriHelper.NavigateTo("/"); + UriHelper.NavigateToRelative("/"); AppState.Navigation.SetForwardHandler(ForwardHandler); diff --git a/NftFaucet/Pages/Step3Page.razor.cs b/NftFaucet/Pages/Step3Page.razor.cs index 7ff073c..4e36a5e 100644 --- a/NftFaucet/Pages/Step3Page.razor.cs +++ b/NftFaucet/Pages/Step3Page.razor.cs @@ -1,4 +1,5 @@ using NftFaucet.Components; +using NftFaucet.Extensions; using NftFaucet.Models; namespace NftFaucet.Pages; @@ -13,7 +14,7 @@ public class Step3Component : BasicComponent protected override async Task OnInitializedAsync() { if (!await AppState.Metamask.IsReady() || string.IsNullOrEmpty(AppState.Storage.TokenUrl)) - UriHelper.NavigateTo("/"); + UriHelper.NavigateToRelative("/"); AppState.Navigation.SetForwardHandler(ForwardHandler); AppState.Storage.DestinationAddress = AppState.Metamask.Address; diff --git a/NftFaucet/Pages/Step4Page.razor.cs b/NftFaucet/Pages/Step4Page.razor.cs index 730c097..fc38fb3 100644 --- a/NftFaucet/Pages/Step4Page.razor.cs +++ b/NftFaucet/Pages/Step4Page.razor.cs @@ -1,6 +1,7 @@ using System.Text; using Microsoft.AspNetCore.Components; using NftFaucet.Components; +using NftFaucet.Extensions; using NftFaucet.Models.Enums; using NftFaucet.Services; @@ -20,7 +21,7 @@ public class Step4Component : BasicComponent { if (!await AppState.Metamask.IsReady() || string.IsNullOrEmpty(AppState.Storage.DestinationAddress)) { - UriHelper.NavigateTo("/"); + UriHelper.NavigateToRelative("/"); } else { @@ -46,6 +47,6 @@ public class Step4Component : BasicComponent protected void Reset() { AppState.Reset(); - UriHelper.NavigateTo("/"); + UriHelper.NavigateToRelative("/"); } }