nft-faucet/NftFaucet/Pages/Step4Page.razor.cs

60 lines
2.2 KiB
C#
Raw Normal View History

2022-03-31 22:16:43 +02:00
using NftFaucet.Components;
2022-04-03 22:30:06 +02:00
using NftFaucet.Extensions;
2022-06-03 17:33:28 +03:00
using NftFaucet.Models;
2022-03-31 22:16:43 +02:00
using NftFaucet.Models.Enums;
2022-06-06 11:31:38 +03:00
using Solnet.Wallet;
2022-03-31 22:16:43 +02:00
namespace NftFaucet.Pages;
public class Step4Component : BasicComponent
{
2022-06-03 17:33:28 +03:00
protected string TokenUrlErrorMessage { get; set; }
protected string DestinationAddressErrorMessage { get; set; }
protected string TokenUrlClass => string.IsNullOrWhiteSpace(TokenUrlErrorMessage) ? null : "invalid-input";
protected string DestinationAddressClass => string.IsNullOrWhiteSpace(DestinationAddressErrorMessage) ? null : "invalid-input";
protected bool IsSupportedNetwork => AppState?.Metamask?.Network != null && Settings?.GetEthereumNetworkOptions(AppState.Metamask.Network!.Value) != null;
2022-03-31 22:16:43 +02:00
protected override async Task OnInitializedAsync()
{
2022-06-03 17:33:28 +03:00
if (!await AppState.Metamask.IsReady() || !AppState.IpfsContext.IsInitialized || string.IsNullOrEmpty(AppState.Storage.TokenUrl))
2022-04-03 22:30:06 +02:00
UriHelper.NavigateToRelative("/");
2022-06-03 17:33:28 +03:00
AppState.Navigation.SetForwardHandler(ForwardHandler);
2022-06-06 12:22:05 +03:00
AppState.Storage.DestinationAddress = AppState.Storage.NetworkType == NetworkType.Solana
? "51CNhAWJ94HrvXLNJrbXzhzgSixpwvwYvXTA9U6itENE"
: AppState.Metamask.Address;
2022-03-31 22:16:43 +02:00
}
2022-06-03 17:33:28 +03:00
protected void OnTokenUrlInputChange()
2022-03-31 22:16:43 +02:00
{
2022-06-03 17:33:28 +03:00
TokenUrlErrorMessage = string.Empty;
2022-03-31 22:16:43 +02:00
}
2022-06-03 17:33:28 +03:00
protected void OnDestinationAddressInputChange()
2022-03-31 22:16:43 +02:00
{
2022-06-03 17:33:28 +03:00
DestinationAddressErrorMessage = string.Empty;
2022-03-31 22:16:43 +02:00
}
2022-04-04 01:38:53 +02:00
2022-06-03 17:33:28 +03:00
protected Task<bool> ForwardHandler()
2022-04-04 02:01:41 +02:00
{
2022-06-03 17:33:28 +03:00
var isValidTokenUri = !string.IsNullOrWhiteSpace(AppState.Storage.TokenUrl);
2022-06-06 11:31:38 +03:00
var isValidDestinationAddress = AppState.Storage.NetworkType == NetworkType.Ethereum
? Address.Create(AppState.Storage.DestinationAddress).IsSuccess
2022-06-03 17:33:28 +03:00
: SolanaAddress.Create(AppState.Storage.DestinationAddress).IsSuccess;
2022-06-03 12:17:34 +03:00
2022-06-03 17:33:28 +03:00
if (!isValidTokenUri)
2022-06-03 12:17:34 +03:00
{
2022-06-03 17:33:28 +03:00
TokenUrlErrorMessage = "Invalid token URI";
2022-06-03 12:17:34 +03:00
}
2022-06-03 17:33:28 +03:00
if (!isValidDestinationAddress)
2022-06-03 12:17:34 +03:00
{
2022-06-03 17:33:28 +03:00
DestinationAddressErrorMessage = "Invalid destination address";
2022-06-03 12:17:34 +03:00
}
2022-04-04 01:38:53 +02:00
RefreshMediator.NotifyStateHasChangedSafe();
2022-06-03 12:17:34 +03:00
2022-06-03 17:33:28 +03:00
return Task.FromResult(isValidTokenUri && isValidDestinationAddress && IsSupportedNetwork);
2022-06-03 12:17:34 +03:00
}
2022-03-31 22:16:43 +02:00
}