Add provider filtering

This commit is contained in:
Ivan Yaremenchuk 2022-08-27 18:36:10 -05:00
parent 6fe9d21276
commit a0b00f8aff
8 changed files with 27 additions and 3 deletions

View File

@ -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();

View File

@ -10,5 +10,4 @@ public class StateStorage
public Guid[] SelectedNetworks { get; set; }
public Guid[] SelectedProviders { get; set; }
public EthereumKey GeneratedKey { get; set; }
}

View File

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

View File

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

View File

@ -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 ?? "<null>"),
("Address", Key?.Address ?? "<null>"),
};
public bool IsNetworkSupported(INetwork network)
=> network.Type == NetworkType.Ethereum;
}

View File

@ -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", "<null>"),
("Address", "<null>"),
};
public bool IsNetworkSupported(INetwork network)
=> network.Type == NetworkType.Solana;
}

View File

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

View File

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