From 1e8bd9500b391c12e0a737bd9b2a4c5e5b9f6560 Mon Sep 17 00:00:00 2001 From: Ivan Yaremenchuk Date: Sat, 27 Aug 2022 16:35:24 -0500 Subject: [PATCH] Add GetProperties method to IProvider --- NftFaucetRadzen/Pages/ProviderPage.razor.cs | 55 ++++++++----------- .../Providers/GeneratedKeysProvider.cs | 7 +++ .../Plugins/ProviderPlugins/IProvider.cs | 1 + .../Metamask/Providers/MetamaskProvider.cs | 7 +++ 4 files changed, 38 insertions(+), 32 deletions(-) diff --git a/NftFaucetRadzen/Pages/ProviderPage.razor.cs b/NftFaucetRadzen/Pages/ProviderPage.razor.cs index d23286d..6e08397 100644 --- a/NftFaucetRadzen/Pages/ProviderPage.razor.cs +++ b/NftFaucetRadzen/Pages/ProviderPage.razor.cs @@ -26,54 +26,45 @@ public partial class ProviderPage : BasicComponent protected override void OnInitialized() { - // AppState.Storage.GeneratedKey = EthereumKey.GenerateNew(); Providers = PluginLoader.ProviderPlugins.SelectMany(x => x.GetProviders()).Select(MapCardListItem).ToArray(); - EnhanceProviderModels(Providers); AddRecommendationsBadge(Providers); } private CardListItem[] Providers { get; set; } - private void EnhanceProviderModels(CardListItem[] models) - { - var genKeyModel = models.FirstOrDefault(x => x.Id == Guid.Parse("ded55b2b-8139-4251-a0fc-ba620f9727c9")); - if (genKeyModel != null) - { - genKeyModel.Properties = new[] - { - new CardListItemProperty { Name = "Private key", Value = AppState.Storage.GeneratedKey?.PrivateKey ?? "" }, - new CardListItemProperty { Name = "Address", Value = AppState.Storage.GeneratedKey?.Address ?? "" }, - }; - } - - var metamaskModel = models.FirstOrDefault(x => x.Id == Guid.Parse("3367b9bb-f50c-4768-aeb3-9ac14d4c3987")); - if (metamaskModel != null) - { - metamaskModel.Properties = new[] - { - new CardListItemProperty { Name = "Installed", Value = "yes" }, - new CardListItemProperty { Name = "Connected", Value = "no" }, - }; - } - } - private static CardListItem MapCardListItem(IProvider provider) - => new CardListItem + { + var cardItem = new CardListItem { Id = provider.Id, ImageName = provider.ImageName, Header = provider.Name, IsDisabled = !provider.IsSupported, - Properties = Array.Empty(), + Properties = provider.GetProperties().Select(x => new CardListItemProperty + { + Name = x.Name, + Value = x.Value, + }).ToArray(), Badges = new[] { - !provider.IsSupported ? new CardListItemBadge { Style = BadgeStyle.Light, Text = "Not Supported" } : null, - }.Where(x => x != null).ToArray(), - Buttons = new[] - { - !provider.IsInitialized ? new CardListItemButton { Name = "Initialize", Action = provider.Initialize, Style = ButtonStyle.Secondary } : null, + !provider.IsSupported ? new CardListItemBadge {Style = BadgeStyle.Light, Text = "Not Supported"} : null, }.Where(x => x != null).ToArray(), }; + Action initAction = () => + { + provider.Initialize(); + cardItem.Properties = provider.GetProperties().Select(x => new CardListItemProperty + { + Name = x.Name, + Value = x.Value, + }).ToArray(); + }; + cardItem.Buttons = new[] + { + !provider.IsInitialized ? new CardListItemButton { Name = "Initialize", Action = initAction, Style = ButtonStyle.Secondary } : null, + }.Where(x => x != null).ToArray(); + return cardItem; + } private void AddRecommendationsBadge(CardListItem[] providers) { diff --git a/NftFaucetRadzen/Plugins/ProviderPlugins/GeneratedKeys/Providers/GeneratedKeysProvider.cs b/NftFaucetRadzen/Plugins/ProviderPlugins/GeneratedKeys/Providers/GeneratedKeysProvider.cs index 5ecac39..157f799 100644 --- a/NftFaucetRadzen/Plugins/ProviderPlugins/GeneratedKeys/Providers/GeneratedKeysProvider.cs +++ b/NftFaucetRadzen/Plugins/ProviderPlugins/GeneratedKeys/Providers/GeneratedKeysProvider.cs @@ -18,4 +18,11 @@ public class GeneratedKeysProvider : IProvider Key = EthereumKey.GenerateNew(); IsInitialized = true; } + + public List<(string Name, string Value)> GetProperties() + => new List<(string Name, string Value)> + { + ("Private key", Key?.PrivateKey ?? ""), + ("Address", Key?.Address ?? ""), + }; } diff --git a/NftFaucetRadzen/Plugins/ProviderPlugins/IProvider.cs b/NftFaucetRadzen/Plugins/ProviderPlugins/IProvider.cs index fa5f834..6f719c3 100644 --- a/NftFaucetRadzen/Plugins/ProviderPlugins/IProvider.cs +++ b/NftFaucetRadzen/Plugins/ProviderPlugins/IProvider.cs @@ -10,4 +10,5 @@ public interface IProvider public bool IsInitialized { get; } public void Initialize(); + public List<(string Name, string Value)> GetProperties(); } diff --git a/NftFaucetRadzen/Plugins/ProviderPlugins/Metamask/Providers/MetamaskProvider.cs b/NftFaucetRadzen/Plugins/ProviderPlugins/Metamask/Providers/MetamaskProvider.cs index e364c4c..8287759 100644 --- a/NftFaucetRadzen/Plugins/ProviderPlugins/Metamask/Providers/MetamaskProvider.cs +++ b/NftFaucetRadzen/Plugins/ProviderPlugins/Metamask/Providers/MetamaskProvider.cs @@ -14,4 +14,11 @@ public class MetamaskProvider : IProvider { IsInitialized = true; } + + public List<(string Name, string Value)> GetProperties() + => new List<(string Name, string Value)> + { + ("Installed", "YES"), + ("Connected", IsInitialized ? "YES" : "NO"), + }; }