From 89c5536610c87b2b6d147d85aff7230066af346d Mon Sep 17 00:00:00 2001 From: Ivan Yaremenchuk Date: Fri, 26 Aug 2022 13:13:40 -0500 Subject: [PATCH] Add BasicComponent, BasicLayout and AppState --- NftFaucetRadzen/Components/BasicComponent.cs | 37 ++++++ NftFaucetRadzen/Components/BasicLayout.cs | 33 +++++ NftFaucetRadzen/Components/CardList.razor | 1 + NftFaucetRadzen/Components/CardList.razor.cs | 4 +- NftFaucetRadzen/Models/RefreshMediator.cs | 19 +++ NftFaucetRadzen/Models/ScopedAppState.cs | 11 ++ NftFaucetRadzen/Models/StateStorage.cs | 6 + NftFaucetRadzen/Pages/Network.razor | 18 +-- NftFaucetRadzen/Pages/Network.razor.cs | 121 +++++++++---------- NftFaucetRadzen/Program.cs | 4 +- NftFaucetRadzen/Shared/MainLayout.razor | 2 +- NftFaucetRadzen/Shared/NavMenu.razor | 6 +- NftFaucetRadzen/Shared/NavMenu.razor.cs | 10 ++ 13 files changed, 192 insertions(+), 80 deletions(-) create mode 100644 NftFaucetRadzen/Components/BasicComponent.cs create mode 100644 NftFaucetRadzen/Components/BasicLayout.cs create mode 100644 NftFaucetRadzen/Models/RefreshMediator.cs create mode 100644 NftFaucetRadzen/Models/ScopedAppState.cs create mode 100644 NftFaucetRadzen/Models/StateStorage.cs create mode 100644 NftFaucetRadzen/Shared/NavMenu.razor.cs diff --git a/NftFaucetRadzen/Components/BasicComponent.cs b/NftFaucetRadzen/Components/BasicComponent.cs new file mode 100644 index 0000000..719542d --- /dev/null +++ b/NftFaucetRadzen/Components/BasicComponent.cs @@ -0,0 +1,37 @@ +using Microsoft.AspNetCore.Components; +using NftFaucetRadzen.Models; +using NftFaucetRadzen.Options; + +namespace NftFaucetRadzen.Components; + +public abstract class BasicComponent : ComponentBase +{ + [Inject] + protected NavigationManager UriHelper { get; set; } + + [Inject] + protected ScopedAppState AppState { get; set; } + + [Inject] + protected RefreshMediator RefreshMediator { get; set; } + + [Inject] + protected Settings Settings { get; set; } + + protected override void OnInitialized() + { + RefreshMediator.StateChanged += async () => await InvokeAsync(StateHasChangedSafe); + } + + protected void StateHasChangedSafe() + { + try + { + InvokeAsync(StateHasChanged); + } + catch (Exception) + { + // ignored + } + } +} diff --git a/NftFaucetRadzen/Components/BasicLayout.cs b/NftFaucetRadzen/Components/BasicLayout.cs new file mode 100644 index 0000000..c06979e --- /dev/null +++ b/NftFaucetRadzen/Components/BasicLayout.cs @@ -0,0 +1,33 @@ +using Microsoft.AspNetCore.Components; +using NftFaucetRadzen.Models; + +namespace NftFaucetRadzen.Components; + +public abstract class BasicLayout : LayoutComponentBase +{ + [Inject] + protected NavigationManager UriHelper { get; set; } + + [Inject] + protected ScopedAppState AppState { get; set; } + + [Inject] + protected RefreshMediator RefreshMediator { get; set; } + + protected override void OnInitialized() + { + RefreshMediator.StateChanged += async () => await InvokeAsync(StateHasChangedSafe); + } + + protected void StateHasChangedSafe() + { + try + { + InvokeAsync(StateHasChanged); + } + catch (Exception) + { + // ignored + } + } +} diff --git a/NftFaucetRadzen/Components/CardList.razor b/NftFaucetRadzen/Components/CardList.razor index cb32faf..4b31206 100644 --- a/NftFaucetRadzen/Components/CardList.razor +++ b/NftFaucetRadzen/Components/CardList.razor @@ -1,4 +1,5 @@ @using NftFaucetRadzen.Models +@inherits BasicComponent