diff --git a/NftFaucet/Pages/ProvidersPage.razor.cs b/NftFaucet/Pages/ProvidersPage.razor.cs index 27d1346..8bb0c41 100644 --- a/NftFaucet/Pages/ProvidersPage.razor.cs +++ b/NftFaucet/Pages/ProvidersPage.razor.cs @@ -1,3 +1,4 @@ +using Microsoft.AspNetCore.Components; using NftFaucet.Components; using NftFaucet.Components.CardList; using NftFaucet.Plugins.ProviderPlugins; @@ -7,12 +8,21 @@ namespace NftFaucet.Pages; public partial class ProvidersPage : BasicComponent { - protected override void OnInitialized() + [Inject] + public IServiceProvider ServiceProvider { get; set; } + + protected override async Task OnInitializedAsync() { Providers = AppState.PluginStorage.Providers.Where(x => AppState.SelectedNetwork != null && x.IsNetworkSupported(AppState.SelectedNetwork)).ToArray(); + foreach (var provider in Providers) + { + if (!provider.IsInitialized) + { + await provider.InitializeAsync(ServiceProvider); + } + } RefreshCards(); RefreshMediator.NotifyStateHasChangedSafe(); - base.OnInitialized(); } private IProvider[] Providers { get; set; } diff --git a/NftFaucet/Plugins/ProviderPlugins/IProvider.cs b/NftFaucet/Plugins/ProviderPlugins/IProvider.cs index 6854cd6..df56f28 100644 --- a/NftFaucet/Plugins/ProviderPlugins/IProvider.cs +++ b/NftFaucet/Plugins/ProviderPlugins/IProvider.cs @@ -10,6 +10,7 @@ public interface IProvider public string Name { get; } public string ShortName { get; } public string ImageName { get; } + public bool IsInitialized { get; } public bool IsSupported { get; } public bool IsConfigured { get; } diff --git a/NftFaucet/Plugins/ProviderPlugins/Keygen/Providers/EthereumKeygenProvider.cs b/NftFaucet/Plugins/ProviderPlugins/Keygen/Providers/EthereumKeygenProvider.cs index c73f434..423c6e7 100644 --- a/NftFaucet/Plugins/ProviderPlugins/Keygen/Providers/EthereumKeygenProvider.cs +++ b/NftFaucet/Plugins/ProviderPlugins/Keygen/Providers/EthereumKeygenProvider.cs @@ -20,6 +20,7 @@ public class EthereumKeygenProvider : IProvider public string Name { get; } = "Ethereum keygen"; public string ShortName { get; } = "EthKeygen"; public string ImageName { get; } = "ecdsa.svg"; + public bool IsInitialized { get; } = true; public bool IsSupported { get; } = true; public bool IsConfigured { get; private set; } public EthereumKey Key { get; private set; } diff --git a/NftFaucet/Plugins/ProviderPlugins/Keygen/Providers/SolanaKeygenProvider.cs b/NftFaucet/Plugins/ProviderPlugins/Keygen/Providers/SolanaKeygenProvider.cs index b7a017b..d4285dd 100644 --- a/NftFaucet/Plugins/ProviderPlugins/Keygen/Providers/SolanaKeygenProvider.cs +++ b/NftFaucet/Plugins/ProviderPlugins/Keygen/Providers/SolanaKeygenProvider.cs @@ -22,6 +22,7 @@ public class SolanaKeygenProvider : IProvider public string Name { get; } = "Solana keygen"; public string ShortName { get; } = "SolKeygen"; public string ImageName { get; } = "ecdsa.svg"; + public bool IsInitialized { get; } = true; public bool IsSupported { get; } = true; public bool IsConfigured { get; private set; } public SolanaKey Key { get; private set; } diff --git a/NftFaucet/Plugins/ProviderPlugins/Metamask/Providers/MetamaskProvider.cs b/NftFaucet/Plugins/ProviderPlugins/Metamask/Providers/MetamaskProvider.cs index c09d5e8..6d5bea2 100644 --- a/NftFaucet/Plugins/ProviderPlugins/Metamask/Providers/MetamaskProvider.cs +++ b/NftFaucet/Plugins/ProviderPlugins/Metamask/Providers/MetamaskProvider.cs @@ -14,6 +14,7 @@ public class MetamaskProvider : IProvider public string Name { get; } = "Metamask"; public string ShortName { get; } = "Metamask"; public string ImageName { get; } = "metamask_fox.svg"; + public bool IsInitialized { get; private set; } public bool IsSupported { get; } = true; public bool IsConfigured => IsMetamaskAvailable && IsSiteConnected && !string.IsNullOrEmpty(Address); @@ -41,6 +42,8 @@ public class MetamaskProvider : IProvider Address = await MetaMaskService.GetSelectedAccountAsync(); ChainId = await MetaMaskService.GetSelectedChainAsync(); } + + IsInitialized = true; } public CardListItemProperty[] GetProperties() diff --git a/NftFaucet/Plugins/ProviderPlugins/Phantom/Providers/PhantomProvider.cs b/NftFaucet/Plugins/ProviderPlugins/Phantom/Providers/PhantomProvider.cs index acaba44..29bb1f2 100644 --- a/NftFaucet/Plugins/ProviderPlugins/Phantom/Providers/PhantomProvider.cs +++ b/NftFaucet/Plugins/ProviderPlugins/Phantom/Providers/PhantomProvider.cs @@ -11,6 +11,7 @@ public class PhantomProvider : IProvider public string Name { get; } = "Phantom"; public string ShortName { get; } = "Phantom"; public string ImageName { get; } = "phantom.svg"; + public bool IsInitialized { get; } = true; public bool IsSupported { get; } = false; public bool IsConfigured { get; private set; }