Fix providers initialization

This commit is contained in:
Ivan Yaremenchuk 2022-10-01 10:49:55 -05:00
parent 1114351ead
commit 4b74ce20dc
6 changed files with 19 additions and 2 deletions

View File

@ -1,3 +1,4 @@
using Microsoft.AspNetCore.Components;
using NftFaucet.Components; using NftFaucet.Components;
using NftFaucet.Components.CardList; using NftFaucet.Components.CardList;
using NftFaucet.Plugins.ProviderPlugins; using NftFaucet.Plugins.ProviderPlugins;
@ -7,12 +8,21 @@ namespace NftFaucet.Pages;
public partial class ProvidersPage : BasicComponent 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(); 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(); RefreshCards();
RefreshMediator.NotifyStateHasChangedSafe(); RefreshMediator.NotifyStateHasChangedSafe();
base.OnInitialized();
} }
private IProvider[] Providers { get; set; } private IProvider[] Providers { get; set; }

View File

@ -10,6 +10,7 @@ public interface IProvider
public string Name { get; } public string Name { get; }
public string ShortName { get; } public string ShortName { get; }
public string ImageName { get; } public string ImageName { get; }
public bool IsInitialized { get; }
public bool IsSupported { get; } public bool IsSupported { get; }
public bool IsConfigured { get; } public bool IsConfigured { get; }

View File

@ -20,6 +20,7 @@ public class EthereumKeygenProvider : IProvider
public string Name { get; } = "Ethereum keygen"; public string Name { get; } = "Ethereum keygen";
public string ShortName { get; } = "EthKeygen"; public string ShortName { get; } = "EthKeygen";
public string ImageName { get; } = "ecdsa.svg"; public string ImageName { get; } = "ecdsa.svg";
public bool IsInitialized { get; } = true;
public bool IsSupported { get; } = true; public bool IsSupported { get; } = true;
public bool IsConfigured { get; private set; } public bool IsConfigured { get; private set; }
public EthereumKey Key { get; private set; } public EthereumKey Key { get; private set; }

View File

@ -22,6 +22,7 @@ public class SolanaKeygenProvider : IProvider
public string Name { get; } = "Solana keygen"; public string Name { get; } = "Solana keygen";
public string ShortName { get; } = "SolKeygen"; public string ShortName { get; } = "SolKeygen";
public string ImageName { get; } = "ecdsa.svg"; public string ImageName { get; } = "ecdsa.svg";
public bool IsInitialized { get; } = true;
public bool IsSupported { get; } = true; public bool IsSupported { get; } = true;
public bool IsConfigured { get; private set; } public bool IsConfigured { get; private set; }
public SolanaKey Key { get; private set; } public SolanaKey Key { get; private set; }

View File

@ -14,6 +14,7 @@ public class MetamaskProvider : IProvider
public string Name { get; } = "Metamask"; public string Name { get; } = "Metamask";
public string ShortName { get; } = "Metamask"; public string ShortName { get; } = "Metamask";
public string ImageName { get; } = "metamask_fox.svg"; public string ImageName { get; } = "metamask_fox.svg";
public bool IsInitialized { get; private set; }
public bool IsSupported { get; } = true; public bool IsSupported { get; } = true;
public bool IsConfigured => IsMetamaskAvailable && IsSiteConnected && !string.IsNullOrEmpty(Address); public bool IsConfigured => IsMetamaskAvailable && IsSiteConnected && !string.IsNullOrEmpty(Address);
@ -41,6 +42,8 @@ public class MetamaskProvider : IProvider
Address = await MetaMaskService.GetSelectedAccountAsync(); Address = await MetaMaskService.GetSelectedAccountAsync();
ChainId = await MetaMaskService.GetSelectedChainAsync(); ChainId = await MetaMaskService.GetSelectedChainAsync();
} }
IsInitialized = true;
} }
public CardListItemProperty[] GetProperties() public CardListItemProperty[] GetProperties()

View File

@ -11,6 +11,7 @@ public class PhantomProvider : IProvider
public string Name { get; } = "Phantom"; public string Name { get; } = "Phantom";
public string ShortName { get; } = "Phantom"; public string ShortName { get; } = "Phantom";
public string ImageName { get; } = "phantom.svg"; public string ImageName { get; } = "phantom.svg";
public bool IsInitialized { get; } = true;
public bool IsSupported { get; } = false; public bool IsSupported { get; } = false;
public bool IsConfigured { get; private set; } public bool IsConfigured { get; private set; }