From a0b00f8affb34e119c611d6c44ed1b2711f4ca22 Mon Sep 17 00:00:00 2001 From: Ivan Yaremenchuk Date: Sat, 27 Aug 2022 18:36:10 -0500 Subject: [PATCH] Add provider filtering --- NftFaucetRadzen/Models/ScopedAppState.cs | 6 ++++++ NftFaucetRadzen/Models/StateStorage.cs | 1 - NftFaucetRadzen/Pages/ProviderPage.razor.cs | 2 +- NftFaucetRadzen/Plugins/ProviderPlugins/IProvider.cs | 2 +- .../Keygen/Providers/EthereumKeygenProvider.cs | 4 ++++ .../Keygen/Providers/SolanaKeygenProvider.cs | 5 +++++ .../ProviderPlugins/Metamask/Providers/MetamaskProvider.cs | 5 +++++ .../ProviderPlugins/Phantom/Providers/PhantomProvider.cs | 5 +++++ 8 files changed, 27 insertions(+), 3 deletions(-) diff --git a/NftFaucetRadzen/Models/ScopedAppState.cs b/NftFaucetRadzen/Models/ScopedAppState.cs index 26a3a0c..fd307aa 100644 --- a/NftFaucetRadzen/Models/ScopedAppState.cs +++ b/NftFaucetRadzen/Models/ScopedAppState.cs @@ -1,9 +1,15 @@ +using NftFaucetRadzen.Plugins.NetworkPlugins; +using NftFaucetRadzen.Plugins.ProviderPlugins; + namespace NftFaucetRadzen.Models; public class ScopedAppState { public StateStorage Storage { get; private set; } = new(); + public INetwork SelectedNetwork => Storage.Networks.FirstOrDefault(x => x.Id == Storage?.SelectedNetworks?.FirstOrDefault()); + public IProvider SelectedProvider => Storage.Providers.FirstOrDefault(x => x.Id == Storage?.SelectedProviders?.FirstOrDefault()); + public void Reset() { Storage = new StateStorage(); diff --git a/NftFaucetRadzen/Models/StateStorage.cs b/NftFaucetRadzen/Models/StateStorage.cs index c862bd9..50abb38 100644 --- a/NftFaucetRadzen/Models/StateStorage.cs +++ b/NftFaucetRadzen/Models/StateStorage.cs @@ -10,5 +10,4 @@ public class StateStorage public Guid[] SelectedNetworks { get; set; } public Guid[] SelectedProviders { get; set; } - public EthereumKey GeneratedKey { get; set; } } diff --git a/NftFaucetRadzen/Pages/ProviderPage.razor.cs b/NftFaucetRadzen/Pages/ProviderPage.razor.cs index a1bf968..8abac2e 100644 --- a/NftFaucetRadzen/Pages/ProviderPage.razor.cs +++ b/NftFaucetRadzen/Pages/ProviderPage.razor.cs @@ -26,7 +26,7 @@ public partial class ProviderPage : BasicComponent protected override void OnInitialized() { - Providers = AppState.Storage.Providers.ToArray(); + Providers = AppState.Storage.Providers.Where(x => x.IsNetworkSupported(AppState.SelectedNetwork)).ToArray(); RefreshData(); } diff --git a/NftFaucetRadzen/Plugins/ProviderPlugins/IProvider.cs b/NftFaucetRadzen/Plugins/ProviderPlugins/IProvider.cs index 9b0dcd6..67df997 100644 --- a/NftFaucetRadzen/Plugins/ProviderPlugins/IProvider.cs +++ b/NftFaucetRadzen/Plugins/ProviderPlugins/IProvider.cs @@ -13,5 +13,5 @@ public interface IProvider public void Initialize(); public List<(string Name, string Value)> GetProperties(); - // public bool IsNetworkSupported(INetwork network); + public bool IsNetworkSupported(INetwork network); } diff --git a/NftFaucetRadzen/Plugins/ProviderPlugins/Keygen/Providers/EthereumKeygenProvider.cs b/NftFaucetRadzen/Plugins/ProviderPlugins/Keygen/Providers/EthereumKeygenProvider.cs index 801efc3..279bd70 100644 --- a/NftFaucetRadzen/Plugins/ProviderPlugins/Keygen/Providers/EthereumKeygenProvider.cs +++ b/NftFaucetRadzen/Plugins/ProviderPlugins/Keygen/Providers/EthereumKeygenProvider.cs @@ -1,4 +1,5 @@ using NftFaucetRadzen.Models; +using NftFaucetRadzen.Plugins.NetworkPlugins; namespace NftFaucetRadzen.Plugins.ProviderPlugins.Keygen.Providers; @@ -25,4 +26,7 @@ public class EthereumKeygenProvider : IProvider ("Private key", Key?.PrivateKey ?? ""), ("Address", Key?.Address ?? ""), }; + + public bool IsNetworkSupported(INetwork network) + => network.Type == NetworkType.Ethereum; } diff --git a/NftFaucetRadzen/Plugins/ProviderPlugins/Keygen/Providers/SolanaKeygenProvider.cs b/NftFaucetRadzen/Plugins/ProviderPlugins/Keygen/Providers/SolanaKeygenProvider.cs index 23f79e6..cee607b 100644 --- a/NftFaucetRadzen/Plugins/ProviderPlugins/Keygen/Providers/SolanaKeygenProvider.cs +++ b/NftFaucetRadzen/Plugins/ProviderPlugins/Keygen/Providers/SolanaKeygenProvider.cs @@ -1,3 +1,5 @@ +using NftFaucetRadzen.Plugins.NetworkPlugins; + namespace NftFaucetRadzen.Plugins.ProviderPlugins.Keygen.Providers; public class SolanaKeygenProvider : IProvider @@ -21,4 +23,7 @@ public class SolanaKeygenProvider : IProvider ("Private key", ""), ("Address", ""), }; + + public bool IsNetworkSupported(INetwork network) + => network.Type == NetworkType.Solana; } diff --git a/NftFaucetRadzen/Plugins/ProviderPlugins/Metamask/Providers/MetamaskProvider.cs b/NftFaucetRadzen/Plugins/ProviderPlugins/Metamask/Providers/MetamaskProvider.cs index 8287759..ce494f9 100644 --- a/NftFaucetRadzen/Plugins/ProviderPlugins/Metamask/Providers/MetamaskProvider.cs +++ b/NftFaucetRadzen/Plugins/ProviderPlugins/Metamask/Providers/MetamaskProvider.cs @@ -1,3 +1,5 @@ +using NftFaucetRadzen.Plugins.NetworkPlugins; + namespace NftFaucetRadzen.Plugins.ProviderPlugins.Metamask.Providers; public class MetamaskProvider : IProvider @@ -21,4 +23,7 @@ public class MetamaskProvider : IProvider ("Installed", "YES"), ("Connected", IsInitialized ? "YES" : "NO"), }; + + public bool IsNetworkSupported(INetwork network) + => network.Type == NetworkType.Ethereum; } diff --git a/NftFaucetRadzen/Plugins/ProviderPlugins/Phantom/Providers/PhantomProvider.cs b/NftFaucetRadzen/Plugins/ProviderPlugins/Phantom/Providers/PhantomProvider.cs index 4e1d2a1..cfb3865 100644 --- a/NftFaucetRadzen/Plugins/ProviderPlugins/Phantom/Providers/PhantomProvider.cs +++ b/NftFaucetRadzen/Plugins/ProviderPlugins/Phantom/Providers/PhantomProvider.cs @@ -1,3 +1,5 @@ +using NftFaucetRadzen.Plugins.NetworkPlugins; + namespace NftFaucetRadzen.Plugins.ProviderPlugins.Phantom.Providers; public class PhantomProvider : IProvider @@ -21,4 +23,7 @@ public class PhantomProvider : IProvider ("Installed", "YES"), ("Connected", IsInitialized ? "YES" : "NO"), }; + + public bool IsNetworkSupported(INetwork network) + => network.Type == NetworkType.Solana; }