11#include " Types/ERC1155SaleContract.h"
22#include " ABI/ABI.h"
3+ #include " Util/Log.h"
34
45UERC1155SaleContract::UERC1155SaleContract ()
56{
@@ -16,28 +17,28 @@ UERC1155SaleContract::UERC1155SaleContract(FString ContractAddress, FString Paym
1617FRawTransaction UERC1155SaleContract::MakePurchaseTransaction (const FString& ToAddress, const TArray<int32>& TokenIds, const TArray<int32>& Amounts, const TArray<FString>& Proof)
1718{
1819 FString FunctionSignature = " mint(address,uint256[],uint256[],bytes,address,uint256,bytes32[])" ;
19-
20+
2021 FString WalletAddress = ToAddress;
2122 FString WalletAddressNoPrefix = WalletAddress.Mid (2 , WalletAddress.Len ());
2223 FAddress WalletAddressBytes = FAddress::From (WalletAddressNoPrefix);
2324
24- TFixedABIData ABIAccount = ABI::Address (WalletAddressBytes);
25+ TSharedPtr< TFixedABIData> ABIAccount = MakeShared<TFixedABIData>( ABI::Address (WalletAddressBytes) );
2526
2627 TArray<TSharedPtr<ABIElement>> TokenIdsArray;
2728 for (uint32 TokenId : TokenIds)
2829 {
2930 const TFixedABIData* TokenIdData = new TFixedABIData (ABI::Int32 (TokenId));
3031 TokenIdsArray.Add (MakeShared<TFixedABIData>(*TokenIdData));
3132 }
32- TDynamicABIArray ABIArrayTokenIds (TokenIdsArray);
33+ TSharedPtr< TDynamicABIArray> ABIArrayTokenIds = MakeShared<TDynamicABIArray> (TokenIdsArray);
3334
3435 TArray<TSharedPtr<ABIElement>> AmountsArray;
3536 for (uint32 Amount : Amounts)
3637 {
3738 const TFixedABIData* AmountData = new TFixedABIData (ABI::Int32 (Amount));
3839 AmountsArray.Add (MakeShared<TFixedABIData>(*AmountData));
3940 }
40- TDynamicABIArray ABIArrayAmounts (AmountsArray);
41+ TSharedPtr< TDynamicABIArray> ABIArrayAmounts = MakeShared<TDynamicABIArray> (AmountsArray);
4142
4243 TArray<TSharedPtr<ABIElement>> ProofArray;
4344 for (const FString& ProofEntry : Proof)
@@ -49,28 +50,33 @@ FRawTransaction UERC1155SaleContract::MakePurchaseTransaction(const FString& ToA
4950 const TFixedABIData* ProofData = new TFixedABIData (ProofBytes);
5051 ProofArray.Add (MakeShared<TFixedABIData>(*ProofData));
5152 }
52- TDynamicABIArray ABIArrayProof (ProofArray);
53-
54- TDynamicABIData ABIData = ABI::String (Data);
55- TFixedABIData ABIAddressPayment = ABI::Address (FAddress::From (PaymentToken.Mid (2 , PaymentToken.Len ())));
56- TFixedABIData ABIAmount = ABI::UInt32 (MaxTotal);
53+ TSharedPtr<TDynamicABIArray> ABIArrayProof = MakeShared<TDynamicABIArray>(ProofArray);
5754
55+ TSharedPtr<TDynamicABIData> ABIData = MakeShared<TDynamicABIData>(ABI::String (Data));
56+ TSharedPtr<TFixedABIData> ABIAddressPayment = MakeShared<TFixedABIData>(ABI::Address (FAddress::From (PaymentToken.Mid (2 , PaymentToken.Len ()))));
57+ TSharedPtr<TFixedABIData> ABIAmount = MakeShared<TFixedABIData>(ABI::UInt32 (MaxTotal));
5858
59- TArray<ABIElement*> Arr;
60- Arr.Add (&ABIAccount);
61- Arr.Add (&ABIArrayTokenIds);
62- Arr.Add (&ABIArrayAmounts);
63- Arr.Add (&ABIData);
64- Arr.Add (&ABIAddressPayment);
65- Arr.Add (&ABIAmount);
66- Arr.Add (&ABIArrayProof);
6759
68- FUnsizedData EncodedData = ABI::Encode (FunctionSignature, Arr);
60+ TArray<TSharedPtr<ABIElement>> Arr;
61+ Arr.Add (ABIAccount);
62+ Arr.Add (ABIArrayTokenIds);
63+ Arr.Add (ABIArrayAmounts);
64+ Arr.Add (ABIData);
65+ Arr.Add (ABIAddressPayment);
66+ Arr.Add (ABIAmount);
67+ Arr.Add (ABIArrayProof);
6968
69+ TOptional<FUnsizedData> EncodedData = ABI::Encode (FunctionSignature, Arr);
7070 FRawTransaction T;
71+
72+ if (!EncodedData.IsSet ())
73+ {
74+ SEQ_LOG (Display, TEXT (" Encoded data is invalid" ));
75+ return T;
76+ }
7177
7278 T.to = ContractAddress;
73- T.data = " 0x" + EncodedData.ToHex ();
79+ T.data = " 0x" + EncodedData.GetValue (). ToHex ();
7480 T.value = " 0" ;
7581 return T;
7682}
0 commit comments