mirror of
https://github.com/status-im/nft-faucet.git
synced 2025-02-23 20:18:24 +00:00
58 lines
2.1 KiB
C#
58 lines
2.1 KiB
C#
using NftFaucet.Components;
|
|
using NftFaucet.Extensions;
|
|
using NftFaucet.Models;
|
|
using NftFaucet.Models.Enums;
|
|
using Solnet.Wallet;
|
|
|
|
namespace NftFaucet.Pages;
|
|
|
|
public class Step4Component : BasicComponent
|
|
{
|
|
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;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
if (!await AppState.Metamask.IsReady() || !AppState.IpfsContext.IsInitialized || string.IsNullOrEmpty(AppState.Storage.TokenUrl))
|
|
UriHelper.NavigateToRelative("/");
|
|
|
|
AppState.Navigation.SetForwardHandler(ForwardHandler);
|
|
AppState.Storage.DestinationAddress = AppState.Metamask.Address;
|
|
}
|
|
|
|
protected void OnTokenUrlInputChange()
|
|
{
|
|
TokenUrlErrorMessage = string.Empty;
|
|
}
|
|
|
|
protected void OnDestinationAddressInputChange()
|
|
{
|
|
DestinationAddressErrorMessage = string.Empty;
|
|
}
|
|
|
|
protected Task<bool> ForwardHandler()
|
|
{
|
|
var isValidTokenUri = !string.IsNullOrWhiteSpace(AppState.Storage.TokenUrl);
|
|
var isValidDestinationAddress = AppState.Storage.NetworkType == NetworkType.Ethereum
|
|
? Address.Create(AppState.Storage.DestinationAddress).IsSuccess
|
|
: SolanaAddress.Create(AppState.Storage.DestinationAddress).IsSuccess;
|
|
|
|
if (!isValidTokenUri)
|
|
{
|
|
TokenUrlErrorMessage = "Invalid token URI";
|
|
}
|
|
|
|
if (!isValidDestinationAddress)
|
|
{
|
|
DestinationAddressErrorMessage = "Invalid destination address";
|
|
}
|
|
|
|
RefreshMediator.NotifyStateHasChangedSafe();
|
|
|
|
return Task.FromResult(isValidTokenUri && isValidDestinationAddress && IsSupportedNetwork);
|
|
}
|
|
}
|