Skip to content

Commit 132aa4b

Browse files
authored
Merge pull request #217 from 0xsequence/feature/listAccountsIntent
added ListAccounts intent support
2 parents 2751e65 + 9f72872 commit 132aa4b

11 files changed

Lines changed: 170 additions & 2 deletions

File tree

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version https://git-lfs.github.com/spec/v1
2-
oid sha256:c9e98f46668233166316278e81da225edcc5b5dec838547eff17f2473d3fb020
3-
size 2374223
2+
oid sha256:8b791c47c7cc0be72b4be832085448682755097fd1e8733b5cc0f42882fe84ff
3+
size 2377660

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,14 @@ void USequenceWallet::ListSessions(const TSuccessCallback<TArray<FSeqListSession
203203
}
204204
}
205205

206+
void USequenceWallet::ListAccounts(const TSuccessCallback<FSeqListAccountsResponse_Data>& OnSuccess, const FFailureCallback& OnFailure) const
207+
{
208+
if (this->SequenceRPCManager)
209+
{
210+
this->SequenceRPCManager->ListAccounts(this->Credentials, OnSuccess, OnFailure);
211+
}
212+
}
213+
206214
void USequenceWallet::GetSessionAuthProof(const FString& Nonce, const TSuccessCallback<FSeqGetSessionAuthProof_Data>& OnSuccess, const FFailureCallback& OnFailure) const
207215
{
208216
if (this->SequenceRPCManager)

Plugins/SequencePlugin/Source/SequencePlugin/Private/Sequence/SequenceSendIntent.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ static const FString SendTransactionOP = "sendTransaction";
1717
static const FString FeeOptionsOP = "feeOptions";
1818
static const FString GetIdTokenOP = "getIdToken";
1919
static const FString ListSessionsOP = "listSessions";
20+
static const FString ListAccountsOP = "listAccounts";
2021
static const FString GetSessionAuthProofOP = "sessionAuthProof";
2122
static const FString SignMessageOP = "signMessage";
2223
static const FString FederateSessionOP = "federateAccount";
@@ -446,6 +447,30 @@ struct SEQUENCEPLUGIN_API FListSessionsData : public FGenericData
446447
}
447448
};
448449

450+
USTRUCT()
451+
struct SEQUENCEPLUGIN_API FListAccountsData : public FGenericData
452+
{
453+
GENERATED_USTRUCT_BODY()
454+
UPROPERTY()
455+
FString wallet = "";
456+
457+
FListAccountsData()
458+
{
459+
Operation = ListAccountsOP;
460+
}
461+
462+
FListAccountsData(const FString& WalletIn)
463+
{
464+
Operation = ListAccountsOP;
465+
wallet = WalletIn;
466+
}
467+
468+
virtual FString GetJson() const override
469+
{
470+
return "";
471+
}
472+
};
473+
449474
USTRUCT()
450475
struct SEQUENCEPLUGIN_API FGetSessionAuthProofData : public FGenericData
451476
{

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,14 @@ void USequenceWalletBP::CallOnApiListSessions(const FSequenceResponseStatus& Sta
7373
UE_LOG(LogTemp, Error, TEXT("[Nothing bound to: OnApiListSessions]"));
7474
}
7575

76+
void USequenceWalletBP::CallOnApiListAccounts(const FSequenceResponseStatus& Status, const FSeqListAccountsResponse_Data& Response) const
77+
{
78+
if (this->OnApiListAccounts.IsBound())
79+
this->OnApiListAccounts.Broadcast(Status, Response);
80+
else
81+
UE_LOG(LogTemp, Error, TEXT("[Nothing bound to: OnApiListAccounts]"));
82+
}
83+
7684
void USequenceWalletBP::CallOnApiGetSessionAuthProof(const FSequenceResponseStatus& Status, const FSeqGetSessionAuthProof_Data Response) const
7785
{
7886
if (this->OnApiGetSessionAuthProof.IsBound())
@@ -455,6 +463,26 @@ void USequenceWalletBP::ApiListSessions()
455463
}
456464
}
457465

466+
void USequenceWalletBP::ApiListAccounts()
467+
{
468+
const TFunction<void(FSeqListAccountsResponse_Data)> OnSuccess = [this](const FSeqListAccountsResponse_Data& Response)
469+
{
470+
this->CallOnApiListAccounts(FSequenceResponseStatus(true, ListAccountsTrt), Response);
471+
};
472+
473+
const TFunction<void(FSequenceError)> OnFailure = [this](const FSequenceError& Err)
474+
{
475+
this->CallOnApiListAccounts(FSequenceResponseStatus(false, Err.Message, ListAccountsTrt), {});
476+
};
477+
478+
const TOptional<USequenceWallet*> WalletOptional = USequenceWallet::Get();
479+
if (WalletOptional.IsSet() && WalletOptional.GetValue())
480+
{
481+
const USequenceWallet* Wallet = WalletOptional.GetValue();
482+
Wallet->ListAccounts(OnSuccess, OnFailure);
483+
}
484+
}
485+
458486
void USequenceWalletBP::ApiGetSessionAuthProof(const FString& Nonce)
459487
{
460488

Plugins/SequencePlugin/Source/SequencePlugin/Private/SequenceRPCManager.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,13 @@ FString USequenceRPCManager::BuildListSessionIntent(const FCredentials_BE& Crede
131131
return Intent;
132132
}
133133

134+
FString USequenceRPCManager::BuildListAccountsIntent(const FCredentials_BE& Credentials) const
135+
{
136+
const FListAccountsData ListAccountsData(Credentials.GetWalletAddress());
137+
const FString Intent = this->GenerateIntent<FListAccountsData>(ListAccountsData);
138+
return Intent;
139+
}
140+
134141
FString USequenceRPCManager::BuildGetSessionAuthProofIntent(const FCredentials_BE& Credentials, const FString& Nonce) const
135142
{
136143
const FGetSessionAuthProofData GetSessionAuthProofData(Credentials.GetNetworkString(), Credentials.GetWalletAddress(), Nonce);
@@ -441,6 +448,33 @@ void USequenceRPCManager::ListSessions(const FCredentials_BE& Credentials, const
441448
}
442449
}
443450

451+
void USequenceRPCManager::ListAccounts(const FCredentials_BE& Credentials, const TSuccessCallback<FSeqListAccountsResponse_Data>& OnSuccess, const FFailureCallback& OnFailure) const
452+
{
453+
const TSuccessCallback<FString> OnResponse = [OnSuccess, OnFailure](const FString& Response)
454+
{
455+
const FSeqListAccountsResponse ParsedResponse = USequenceSupport::JSONStringToStruct<FSeqListAccountsResponse>(Response);
456+
457+
UE_LOG(LogTemp, Log, TEXT("%s"), *Response);
458+
if (ParsedResponse.IsValid())
459+
{
460+
OnSuccess(ParsedResponse.Response.Data);
461+
}
462+
else
463+
{
464+
OnFailure(FSequenceError(RequestFail, "Error Parsing Response: " + Response));
465+
}
466+
};
467+
468+
if (Credentials.RegisteredValid())
469+
{
470+
this->SequenceRPC(this->BuildAuthenticatorIntentsUrl(), this->BuildListAccountsIntent(Credentials), OnResponse, OnFailure);
471+
}
472+
else
473+
{
474+
OnFailure(FSequenceError(RequestFail, "[Session Not Registered Please Register Session First]"));
475+
}
476+
}
477+
444478
void USequenceRPCManager::GetSessionAuthProof(const FCredentials_BE& Credentials, const FString& Nonce, const TSuccessCallback<FSeqGetSessionAuthProof_Data>& OnSuccess, const FFailureCallback& OnFailure) const
445479
{
446480
const TSuccessCallback<FString> OnResponse = [OnSuccess, OnFailure](const FString& Response)

Plugins/SequencePlugin/Source/SequencePlugin/Private/SequenceRPCManager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ class SEQUENCEPLUGIN_API USequenceRPCManager : public UObject
6969
FString BuildSendTransactionWithFeeIntent(const FCredentials_BE& Credentials, const TArray<TransactionUnion>& Transactions,const FString& FeeQuote) const;
7070
FString BuildGetIdTokenIntent(const FCredentials_BE& Credentials, const FString& nonce) const;
7171
FString BuildListSessionIntent(const FCredentials_BE& Credentials) const;
72+
FString BuildListAccountsIntent(const FCredentials_BE& Credentials) const;
7273
FString BuildGetSessionAuthProofIntent(const FCredentials_BE& Credentials, const FString& Nonce) const;
7374
FString BuildCloseSessionIntent() const;
7475
FString BuildSessionValidationIntent() const;
@@ -199,6 +200,7 @@ class SEQUENCEPLUGIN_API USequenceRPCManager : public UObject
199200

200201
void ListSessions(const FCredentials_BE& Credentials, const TSuccessCallback<TArray<FSeqListSessions_Session>>& OnSuccess, const FFailureCallback& OnFailure) const;
201202

203+
void ListAccounts(const FCredentials_BE& Credentials, const TSuccessCallback<FSeqListAccountsResponse_Data>& OnSuccess, const FFailureCallback& OnFailure) const;
202204

203205
void GetSessionAuthProof(const FCredentials_BE& Credentials, const FString& Nonce, const TSuccessCallback<FSeqGetSessionAuthProof_Data>& OnSuccess, const FFailureCallback& OnFailure) const;
204206
/**

Plugins/SequencePlugin/Source/SequencePlugin/Public/Marketplace/Structs/SeqMarketplaceSortBy.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include "CoreMinimal.h"
44
#include "Marketplace/Marketplace_Enums.h"
5+
#include "Dom/JsonObject.h"
56
#include "SeqMarketplaceSortBy.generated.h"
67

78
USTRUCT(BlueprintType)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ class SEQUENCEPLUGIN_API USequenceWallet : public UGameInstanceSubsystem
209209

210210
void ListSessions(const TSuccessCallback<TArray<FSeqListSessions_Session>>& OnSuccess, const FFailureCallback& OnFailure) const;
211211

212+
void ListAccounts(const TSuccessCallback<FSeqListAccountsResponse_Data>& OnSuccess, const FFailureCallback& OnFailure) const;
212213

213214
void GetSessionAuthProof(const FString& Nonce, const TSuccessCallback<FSeqGetSessionAuthProof_Data>& OnSuccess, const FFailureCallback& OnFailure) const;
214215

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

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -639,6 +639,66 @@ struct SEQUENCEPLUGIN_API FSeqListSessionsResponse
639639
}
640640
};
641641

642+
USTRUCT(Blueprintable)
643+
struct SEQUENCEPLUGIN_API FSeqAccount
644+
{
645+
GENERATED_BODY()
646+
647+
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Default")
648+
FString Id = "";
649+
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Default")
650+
FString Type = "";
651+
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Default")
652+
FString Issuer = "";
653+
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Default")
654+
FString Email = "";
655+
656+
657+
};
658+
659+
USTRUCT(Blueprintable)
660+
struct SEQUENCEPLUGIN_API FSeqListAccountsResponse_Data
661+
{
662+
GENERATED_BODY()
663+
664+
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Default")
665+
TArray<FSeqAccount> Accounts;
666+
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Default")
667+
FString CurrentAccountId = "";
668+
};
669+
670+
671+
672+
USTRUCT()
673+
struct SEQUENCEPLUGIN_API FSeqListAccountsResponse_Response
674+
{
675+
GENERATED_BODY()
676+
UPROPERTY()
677+
FString Code = "";
678+
UPROPERTY()
679+
FSeqListAccountsResponse_Data Data;
680+
681+
bool IsValid() const
682+
{
683+
return Code.Equals(TEXT("accountList"), ESearchCase::IgnoreCase);
684+
}
685+
};
686+
687+
USTRUCT()
688+
struct SEQUENCEPLUGIN_API FSeqListAccountsResponse
689+
{
690+
GENERATED_BODY()
691+
692+
UPROPERTY()
693+
FSeqListAccountsResponse_Response Response;
694+
695+
bool IsValid() const
696+
{
697+
return Response.IsValid();
698+
}
699+
};
700+
701+
642702
//ListSessions//
643703

644704

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnIApiSendTransactionWtihFeeOption
2323
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnIApiSendTransaction, FSequenceResponseStatus, ResponseStatus, FSeqTransactionResponse_Data, Response);
2424
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnIApiGetIdToken, FSequenceResponseStatus, ResponseStatus, FSeqIdTokenResponse_Data, Response);
2525
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnIApiListSessions, FSequenceResponseStatus, ResponseStatus, const TArray<FSeqListSessions_Session>&, Sessions);
26+
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnIApiListAccounts, FSequenceResponseStatus, ResponseStatus, const FSeqListAccountsResponse_Data&, Data);
2627
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnIApiGetSessionAuthProof, FSequenceResponseStatus, ResponseStatus, const FSeqGetSessionAuthProof_Data, Response);
2728
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnIApiGetSupportedTransakCountries, FSequenceResponseStatus, ResponseStatus, const TArray<FSupportedCountry>&, SupportedCountries);
2829

@@ -85,6 +86,9 @@ class SEQUENCEPLUGIN_API USequenceWalletBP : public UGameInstanceSubsystem
8586
UPROPERTY(BlueprintAssignable, Category="0xSequence SDK - Events")
8687
FOnIApiListSessions OnApiListSessions;
8788

89+
UPROPERTY(BlueprintAssignable, Category = "0xSequence SDK - Events")
90+
FOnIApiListAccounts OnApiListAccounts;
91+
8892
UPROPERTY(BlueprintAssignable, Category = "0xSequence SDK - Events")
8993
FOnIApiGetSessionAuthProof OnApiGetSessionAuthProof;
9094

@@ -140,6 +144,7 @@ class SEQUENCEPLUGIN_API USequenceWalletBP : public UGameInstanceSubsystem
140144
void CallOnApiSendTransaction(const FSequenceResponseStatus& Status, const FSeqTransactionResponse_Data& Response) const;
141145
void CallOnApiGetIdToken(const FSequenceResponseStatus& Status, const FSeqIdTokenResponse_Data& Response) const;
142146
void CallOnApiListSessions(const FSequenceResponseStatus& Status, const TArray<FSeqListSessions_Session>& Sessions) const;
147+
void CallOnApiListAccounts(const FSequenceResponseStatus& Status, const FSeqListAccountsResponse_Data& Response) const;
143148
void CallOnApiGetSessionAuthProof(const FSequenceResponseStatus& Status, const FSeqGetSessionAuthProof_Data Response) const;
144149
void CallOnApiGetSupportedTransakCountries(const FSequenceResponseStatus& Status, const TArray<FSupportedCountry>& SupportedCountries) const;
145150

@@ -265,6 +270,9 @@ class SEQUENCEPLUGIN_API USequenceWalletBP : public UGameInstanceSubsystem
265270
UFUNCTION(BlueprintCallable, Category="0xSequence SDK - Functions")
266271
void ApiListSessions();
267272

273+
UFUNCTION(BlueprintCallable, Category = "0xSequence SDK - Functions")
274+
void ApiListAccounts();
275+
268276
UFUNCTION(BlueprintCallable, Category = "0xSequence SDK - Functions")
269277
void ApiGetSessionAuthProof(const FString& Nonce);
270278

0 commit comments

Comments
 (0)