Skip to content

Commit 5b2a601

Browse files
committed
added SendEther function to SequenceWallet
1 parent 9ab7b75 commit 5b2a601

4 files changed

Lines changed: 58 additions & 0 deletions

File tree

Plugins/SequencePlugin/Source/SequencePlugin/Private/Sequence/SequenceAPI.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ void USequenceWallet::ValidateMessageSignature(const int64& ChainId, const FStri
318318
this->SequenceRPCManager->ValidateMessageSignature(ChainId, WalletAddress, Message, Signature, OnSuccess, OnFailure);
319319
}
320320
}
321+
321322
void USequenceWallet::SendTransactionWithFeeOption(const TArray<TransactionUnion>& Transactions, const FFeeOption& FeeOption, const TSuccessCallback<FSeqTransactionResponse_Data>& OnSuccess, const FFailureCallback& OnFailure) const
322323
{
323324
if (this->SequenceRPCManager)
@@ -449,6 +450,19 @@ void USequenceWallet::GetUnfilteredFeeOptions(const TArray<TransactionUnion>& Tr
449450
}
450451
}
451452

453+
void USequenceWallet::SendEther(const FString& RecipientAddress, const FString& Amount, const TSuccessCallback<FSeqTransactionResponse_Data>& OnSuccess, const FFailureCallback& OnFailure) const
454+
{
455+
FRawTransaction T;
456+
T.data = "0x0";
457+
T.to = RecipientAddress;
458+
T.value = Amount;
459+
460+
TArray<TransactionUnion> Transactions;
461+
Transactions.Push(TUnion<FRawTransaction, FERC20Transaction, FERC721Transaction, FERC1155Transaction, FDelayedTransaction>(T));
462+
463+
this->SendTransaction(Transactions, OnSuccess, OnFailure);
464+
}
465+
452466
void USequenceWallet::SendTransaction(const TArray<TransactionUnion>& Transactions, const TSuccessCallback<FSeqTransactionResponse_Data>& OnSuccess, const FFailureCallback& OnFailure) const
453467
{
454468
if (this->SequenceRPCManager)

Plugins/SequencePlugin/Source/SequencePlugin/Private/Sequence/SequenceWalletBP.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@ void USequenceWalletBP::CallOnApiGetUnFilteredFeeOptions(const FSequenceResponse
4040
UE_LOG(LogTemp, Error, TEXT("[Nothing bound to: OnApiGetUnFilteredFeeOptions]"));
4141
}
4242

43+
void USequenceWalletBP::CallOnApiSendEther(const FSequenceResponseStatus& Status, const FSeqTransactionResponse_Data& Response) const
44+
{
45+
if (this->OnApiSendEther.IsBound())
46+
this->OnApiSendEther.Broadcast(Status, Response);
47+
else
48+
UE_LOG(LogTemp, Error, TEXT("[Nothing bound to: OnApiSendEther]"));
49+
}
50+
4351
void USequenceWalletBP::CallOnApiSendTransactionWithFee(const FSequenceResponseStatus& Status, const FSeqTransactionResponse_Data& Response) const
4452
{
4553
if (this->OnApiSendTransactionWithFeeOption.IsBound())
@@ -376,6 +384,26 @@ void USequenceWalletBP::ApiGetUnfilteredFeeOptions(UTransactions * Transactions)
376384
}
377385
}
378386

387+
void USequenceWalletBP::ApiSendEther(const FString& RecipientAddress, const FString& Amount)
388+
{
389+
const TFunction<void (FSeqTransactionResponse_Data)> OnSuccess = [this](const FSeqTransactionResponse_Data& Response)
390+
{
391+
this->CallOnApiSendEther(FSequenceResponseStatus(true, SendTransactionWithFeeTrt), Response);
392+
};
393+
394+
const TFunction<void (FSequenceError)> OnFailure = [this](const FSequenceError& Err)
395+
{
396+
this->CallOnApiSendEther(FSequenceResponseStatus(false, Err.Message, SendTransactionWithFeeTrt), FSeqTransactionResponse_Data());
397+
};
398+
399+
const TOptional<USequenceWallet*> WalletOptional = USequenceWallet::Get();
400+
if (WalletOptional.IsSet() && WalletOptional.GetValue())
401+
{
402+
const USequenceWallet * Wallet = WalletOptional.GetValue();
403+
Wallet->SendEther(RecipientAddress, Amount, OnSuccess, OnFailure);
404+
}
405+
}
406+
379407
void USequenceWalletBP::ApiSendTransactionWithFee(UTransactions * Transactions)
380408
{
381409
const TFunction<void (FSeqTransactionResponse_Data)> OnSuccess = [this](const FSeqTransactionResponse_Data& Response)

Plugins/SequencePlugin/Source/SequencePlugin/Public/Sequence/SequenceAPI.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,15 @@ class SEQUENCEPLUGIN_API USequenceWallet : public UGameInstanceSubsystem
166166

167167
void ValidateMessageSignature(const int64& ChainId, const FString& WalletAddress, const FString& Message, const FString& Signature, const TSuccessCallback<FSeqValidateMessageSignatureResponse_Data>& OnSuccess, const FFailureCallback& OnFailure) const;
168168

169+
/**
170+
* Allows you to send Ether balance to another
171+
* @param RecipientAddress Specify the recipient address you want to send Ether to
172+
* @param Amount Amount of Ether to send
173+
* @param OnSuccess Status if the transaction was successful
174+
* @param OnFailure An error occured during the transaction
175+
*/
176+
void SendEther(const FString& RecipientAddress, const FString& Amount, const TSuccessCallback<FSeqTransactionResponse_Data>& OnSuccess, const FFailureCallback& OnFailure) const;
177+
169178
/**
170179
* Allows you to send a transaction that will be automatically gassed IF the token is able to be (not all can be)
171180
* @param Transactions The transaction you wish to send

Plugins/SequencePlugin/Source/SequencePlugin/Public/Sequence/SequenceWalletBP.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ class SEQUENCEPLUGIN_API USequenceWalletBP : public UGameInstanceSubsystem
7474
UPROPERTY(BlueprintAssignable, Category="0xSequence SDK - Events")
7575
FOnIApiGetUnFilteredFeeOptions OnApiGetUnFilteredFeeOptions;
7676

77+
UPROPERTY(BlueprintAssignable, Category="0xSequence SDK - Events")
78+
FOnIApiSendTransaction OnApiSendEther;
79+
7780
UPROPERTY(BlueprintAssignable, Category="0xSequence SDK - Events")
7881
FOnIApiSendTransactionWtihFeeOption OnApiSendTransactionWithFeeOption;
7982

@@ -140,6 +143,7 @@ class SEQUENCEPLUGIN_API USequenceWalletBP : public UGameInstanceSubsystem
140143
void CallOnApiValidateMessageSignature(const FSequenceResponseStatus& Status, const FSeqValidateMessageSignatureResponse_Data& isValidMessageSignature) const;
141144
void CallOnApiGetFilteredFeeOptions(const FSequenceResponseStatus& Status, const TArray<FFeeOption>& FeeOptions) const;
142145
void CallOnApiGetUnFilteredFeeOptions(const FSequenceResponseStatus& Status, const TArray<FFeeOption>& FeeOptions) const;
146+
void CallOnApiSendEther(const FSequenceResponseStatus& Status, const FSeqTransactionResponse_Data& Response) const;
143147
void CallOnApiSendTransactionWithFee(const FSequenceResponseStatus& Status, const FSeqTransactionResponse_Data& Response) const;
144148
void CallOnApiSendTransaction(const FSequenceResponseStatus& Status, const FSeqTransactionResponse_Data& Response) const;
145149
void CallOnApiGetIdToken(const FSequenceResponseStatus& Status, const FSeqIdTokenResponse_Data& Response) const;
@@ -258,6 +262,9 @@ class SEQUENCEPLUGIN_API USequenceWalletBP : public UGameInstanceSubsystem
258262
UFUNCTION(BlueprintCallable, Category="0xSequence SDK - Functions")
259263
void ApiGetUnfilteredFeeOptions(UTransactions * Transactions);
260264

265+
UFUNCTION(BlueprintCallable, Category="0xSequence SDK - Functions")
266+
void ApiSendEther(const FString& RecipientAddress, const FString& Amount);
267+
261268
UFUNCTION(BlueprintCallable, Category="0xSequence SDK - Functions")
262269
void ApiSendTransactionWithFee(UTransactions * Transactions);
263270

0 commit comments

Comments
 (0)