From 2897e396fbdf2e30f7ee1eccf3bd1fc42c08f628 Mon Sep 17 00:00:00 2001 From: Yurii Didyk Date: Mon, 6 Jun 2022 11:31:38 +0300 Subject: [PATCH] Update validation --- NftFaucet/Models/SolanaAddress.cs | 2 +- NftFaucet/Models/StateStorage.cs | 1 + NftFaucet/Pages/Step1Page.razor | 4 ++-- NftFaucet/Pages/Step2Page.razor | 18 ++++++++++++++++-- NftFaucet/Pages/Step4Page.razor.cs | 5 +++-- NftFaucet/Pages/Step5Page.razor.cs | 1 + .../Services/ISolanaTransactionService.cs | 1 + NftFaucet/Services/SolanaTransactionService.cs | 8 +++++++- 8 files changed, 32 insertions(+), 8 deletions(-) diff --git a/NftFaucet/Models/SolanaAddress.cs b/NftFaucet/Models/SolanaAddress.cs index ef960e7..888f3a9 100644 --- a/NftFaucet/Models/SolanaAddress.cs +++ b/NftFaucet/Models/SolanaAddress.cs @@ -19,7 +19,7 @@ public class SolanaAddress : ValueObject public static Result Create(string value) { - var regex = "[1-9A-HJ-NP-Za-km-z]"; + var regex = "^[1-9A-HJ-NP-Za-km-z]{32,44}$"; if (!Regex.IsMatch(value, regex)) { diff --git a/NftFaucet/Models/StateStorage.cs b/NftFaucet/Models/StateStorage.cs index 491746b..aefb56c 100644 --- a/NftFaucet/Models/StateStorage.cs +++ b/NftFaucet/Models/StateStorage.cs @@ -21,4 +21,5 @@ public class StateStorage public string TokenSymbol { get; set; } = "DFNT"; public bool IsTokenMutable { get; set; } = true; public double SellerFeeBasisPoints { get; set; } = 88; + public bool IncludeMasterEdition { get; set; } = true; } diff --git a/NftFaucet/Pages/Step1Page.razor b/NftFaucet/Pages/Step1Page.razor index be582c4..e33aab8 100644 --- a/NftFaucet/Pages/Step1Page.razor +++ b/NftFaucet/Pages/Step1Page.razor @@ -7,10 +7,10 @@ - - diff --git a/NftFaucet/Pages/Step2Page.razor b/NftFaucet/Pages/Step2Page.razor index cdef1d8..f0a0dbc 100644 --- a/NftFaucet/Pages/Step2Page.razor +++ b/NftFaucet/Pages/Step2Page.razor @@ -72,7 +72,7 @@ - Description: + Token symbol:
@@ -116,6 +116,19 @@ } @if (AppState.Storage.NetworkType == NetworkType.Solana) + { + + + + Include master edition: + + + + + + + } + @if (AppState.Storage.NetworkType == NetworkType.Solana) { @@ -150,7 +163,8 @@
- +
diff --git a/NftFaucet/Pages/Step4Page.razor.cs b/NftFaucet/Pages/Step4Page.razor.cs index e8fb9c3..1db3f70 100644 --- a/NftFaucet/Pages/Step4Page.razor.cs +++ b/NftFaucet/Pages/Step4Page.razor.cs @@ -2,6 +2,7 @@ using NftFaucet.Components; using NftFaucet.Extensions; using NftFaucet.Models; using NftFaucet.Models.Enums; +using Solnet.Wallet; namespace NftFaucet.Pages; @@ -35,8 +36,8 @@ public class Step4Component : BasicComponent protected Task ForwardHandler() { var isValidTokenUri = !string.IsNullOrWhiteSpace(AppState.Storage.TokenUrl); - var isValidDestinationAddress = AppState.Storage.NetworkType == NetworkType.Ethereum - ? Address.Create(AppState.Storage.DestinationAddress).IsSuccess + var isValidDestinationAddress = AppState.Storage.NetworkType == NetworkType.Ethereum + ? Address.Create(AppState.Storage.DestinationAddress).IsSuccess : SolanaAddress.Create(AppState.Storage.DestinationAddress).IsSuccess; if (!isValidTokenUri) diff --git a/NftFaucet/Pages/Step5Page.razor.cs b/NftFaucet/Pages/Step5Page.razor.cs index 3736bac..29084be 100644 --- a/NftFaucet/Pages/Step5Page.razor.cs +++ b/NftFaucet/Pages/Step5Page.razor.cs @@ -62,6 +62,7 @@ public class Step5Component : BasicComponent AppState.Storage.TokenName, AppState.Storage.TokenSymbol, AppState.Storage.IsTokenMutable, + AppState.Storage.IncludeMasterEdition, (uint)AppState.Storage.SellerFeeBasisPoints, (ulong)AppState.Storage.TokenAmount)); } diff --git a/NftFaucet/Services/ISolanaTransactionService.cs b/NftFaucet/Services/ISolanaTransactionService.cs index 3344ffd..8fccb38 100644 --- a/NftFaucet/Services/ISolanaTransactionService.cs +++ b/NftFaucet/Services/ISolanaTransactionService.cs @@ -10,6 +10,7 @@ public interface ISolanaTransactionService string name, string symbol, bool isTokenMutable, + bool includeMasterEdition, uint sellerFeeBasisPoints, ulong amount); } diff --git a/NftFaucet/Services/SolanaTransactionService.cs b/NftFaucet/Services/SolanaTransactionService.cs index 9f10eee..cb3f8e3 100644 --- a/NftFaucet/Services/SolanaTransactionService.cs +++ b/NftFaucet/Services/SolanaTransactionService.cs @@ -20,6 +20,7 @@ public class SolanaTransactionService : ISolanaTransactionService string name, string symbol, bool isTokenMutable, + bool includeMasterEdition, uint sellerFeeBasisPoints, ulong amount) { @@ -44,6 +45,7 @@ public class SolanaTransactionService : ISolanaTransactionService var transaction = await client.GetTransactionAsync(airdropSig.Result); airDropCompleted = transaction.WasRequestSuccessfullyHandled && transaction.ErrorData == null; + await Task.Delay(2500); } while (!airDropCompleted); var walletAddress = wallet.Account.PublicKey; @@ -75,7 +77,11 @@ public class SolanaTransactionService : ISolanaTransactionService pipeline.InitializeForMint(walletAddress, destinationPublicKey, mintAddress, rentExemption.Result, (ulong)amount, tokenPrice); pipeline.AddMetadata(walletAddress, mintAddress, metadataAddress, data, isTokenMutable); - pipeline.AddMasterEdition(walletAddress, mintAddress, masterEditionAddress, metadataAddress, data); + + if (includeMasterEdition) + { + pipeline.AddMasterEdition(walletAddress, mintAddress, masterEditionAddress, metadataAddress, data); + } var blockHash = (await client.GetRecentBlockHashAsync()).Result.Value.Blockhash;