Add ProviderModel

This commit is contained in:
Ivan Yaremenchuk 2022-08-26 22:34:27 -05:00
parent 2962ca6446
commit f59ec571df
6 changed files with 73 additions and 33 deletions

View File

@ -0,0 +1,10 @@
namespace NftFaucetRadzen.Models;
public class ProviderModel
{
public Guid Id { get; set; }
public string Name { get; set; }
public string ShortName { get; set; }
public string ImageName { get; set; }
public bool IsSupported { get; set; }
}

View File

@ -5,4 +5,5 @@ namespace NftFaucetRadzen.Options;
public class Settings
{
public NetworkModel[] Networks { get; set; }
public ProviderModel[] Providers { get; set; }
}

View File

@ -31,37 +31,48 @@ public partial class ProviderPage : BasicComponent
protected override void OnInitialized()
{
// AppState.Storage.GeneratedKey = EthereumKey.GenerateNew();
Providers = new[]
{
new CardListItem
{
Id = Guid.Parse("ded55b2b-8139-4251-a0fc-ba620f9727c9"),
ImageName = "ecdsa.svg",
Header = "Generated keys",
IsDisabled = false,
Properties = new[]
{
new CardListItemProperty { Name = "Private key", Value = AppState.Storage.GeneratedKey?.PrivateKey ?? "<null>" },
new CardListItemProperty { Name = "Address", Value = AppState.Storage.GeneratedKey?.Address ?? "<null>" },
},
Badges = Array.Empty<CardListItemBadge>(),
},
new CardListItem
{
Id = Guid.Parse("3367b9bb-f50c-4768-aeb3-9ac14d4c3987"),
ImageName = "metamask_fox.svg",
Header = "Metamask",
IsDisabled = false,
Properties = new[]
{
new CardListItemProperty { Name = "Installed", Value = "yes" },
new CardListItemProperty { Name = "Connected", Value = "no" },
},
Badges = new[]
{
new CardListItemBadge { Style = BadgeStyle.Success, Text = "Recommended" },
},
}
};
Providers = Settings.Providers.Select(MapCardListItem).ToArray();
EnhanceProviderModels(Providers);
}
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 ?? "<null>" },
new CardListItemProperty { Name = "Address", Value = AppState.Storage.GeneratedKey?.Address ?? "<null>" },
};
}
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" },
};
metamaskModel.Badges = new[]
{
new CardListItemBadge { Style = BadgeStyle.Success, Text = "Recommended" },
};
}
}
private static CardListItem MapCardListItem(ProviderModel model)
=> new CardListItem
{
Id = model.Id,
ImageName = model.ImageName,
Header = model.Name,
IsDisabled = !model.IsSupported,
Properties = Array.Empty<CardListItemProperty>(),
Badges = new[]
{
!model.IsSupported ? new CardListItemBadge { Style = BadgeStyle.Light, Text = "Not Supported" } : null,
}.Where(x => x != null).ToArray(),
};
}

View File

@ -18,7 +18,7 @@
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="provider" >
<span class="oi oi-key" aria-hidden="true"></span> Provider
<span class="oi oi-key" aria-hidden="true"></span> @("Provider" + (SelectedProviderName != null ? $" ({SelectedProviderName})" : string.Empty))
</NavLink>
</div>
</nav>

View File

@ -8,6 +8,8 @@ public partial class NavMenu : BasicComponent
{
protected Guid? SelectedNetworkId => AppState.Storage.SelectedNetworks?.FirstOrDefault();
protected string SelectedNetworkName => Settings.Networks.FirstOrDefault(x => x.Id == SelectedNetworkId)?.ShortName;
protected Guid? SelectedProviderId => AppState.Storage.SelectedProviders?.FirstOrDefault();
protected string SelectedProviderName => Settings.Providers.FirstOrDefault(x => x.Id == SelectedProviderId)?.ShortName;
private bool CollapseNavMenu { get; set; } = true;

View File

@ -378,5 +378,21 @@
"Erc721ContractAddress": null,
"Erc1155ContractAddress": null
}
],
"Providers": [
{
"Id": "ded55b2b-8139-4251-a0fc-ba620f9727c9",
"Name": "Generated keys",
"ShortName": "new keys",
"ImageName": "ecdsa.svg",
"IsSupported": true
},
{
"Id": "3367b9bb-f50c-4768-aeb3-9ac14d4c3987",
"Name": "Metamask",
"ShortName": "Metamask",
"ImageName": "metamask_fox.svg",
"IsSupported": true
}
]
}