Skip to content

Commit d96d4de

Browse files
authored
Merge pull request #221 from 0xsequence/feature/uobject-wrappers
Added Blueprint Subsystems (Authentication, Wallet, Indexer)
2 parents 07ccd5f + 9c0dbce commit d96d4de

18 files changed

Lines changed: 1103 additions & 137 deletions
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:7ca972fc545d28337cdb028f2bfcabdaaf309742ab5c5d1aeb11af3134e70226
3+
size 335108
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
// Copyright 2024 Horizon Blockchain Games Inc. All rights reserved.
2+
3+
#include "Integrators/SequenceIndexerBP.h"
4+
5+
#include "Engine/Engine.h"
6+
#include "Engine/GameInstance.h"
7+
#include "Util/Log.h"
8+
9+
USequenceIndexerBP::USequenceIndexerBP()
10+
{
11+
this->Indexer = NewObject<UIndexer>();
12+
}
13+
14+
void USequenceIndexerBP::SetChainById(const int64 NewChainId)
15+
{
16+
ChainId = NewChainId;
17+
}
18+
19+
void USequenceIndexerBP::SetChainByName(const FString& NewChainName)
20+
{
21+
ChainId = USequenceSupport::GetNetworkId(NewChainName);
22+
}
23+
24+
void USequenceIndexerBP::SetChainByType(const ENetwork& NewChainType)
25+
{
26+
ChainId = USequenceSupport::GetNetworkId(NewChainType);
27+
}
28+
29+
void USequenceIndexerBP::GetEtherBalanceAsync(const FString& WalletAddress)
30+
{
31+
const TSuccessCallback<FSeqEtherBalance> OnSuccess = [this, WalletAddress](const FSeqEtherBalance& EtherBalance)
32+
{
33+
this->CallEtherBalanceReceived(true, WalletAddress, EtherBalance.balanceWei);
34+
};
35+
36+
const FFailureCallback OnFailure = [this, WalletAddress](const FSequenceError& Error)
37+
{
38+
SEQ_LOG(Error, TEXT("Error getting ether balance: %s"), *Error.Message);
39+
this->CallEtherBalanceReceived(false, WalletAddress, 0);
40+
};
41+
42+
this->Indexer->GetEtherBalance(this->ChainId, WalletAddress, OnSuccess, OnFailure);
43+
}
44+
45+
void USequenceIndexerBP::GetTokenBalancesAsync(const FString& WalletAddress, const FString& ContractAddress, const bool IncludeMetadata)
46+
{
47+
const TSuccessCallback<FSeqGetTokenBalancesReturn> OnSuccess = [this, WalletAddress, ContractAddress](const FSeqGetTokenBalancesReturn& TokenBalances)
48+
{
49+
this->CallTokenBalancesReceived(true, WalletAddress, ContractAddress, TokenBalances);
50+
};
51+
52+
const FFailureCallback OnFailure = [this, WalletAddress, ContractAddress](const FSequenceError& Error)
53+
{
54+
SEQ_LOG(Error, TEXT("Error getting token balances: %s"), *Error.Message);
55+
56+
const FSeqGetTokenBalancesReturn Balances;
57+
this->CallTokenBalancesReceived(false, WalletAddress, ContractAddress, Balances);
58+
};
59+
60+
FSeqGetTokenBalancesArgs Args;
61+
Args.accountAddress = WalletAddress;
62+
Args.contractAddress = ContractAddress;
63+
Args.includeMetaData = IncludeMetadata;
64+
65+
this->Indexer->GetTokenBalances(this->ChainId, Args, OnSuccess, OnFailure);
66+
}
67+
68+
void USequenceIndexerBP::GetTokenSuppliesAsync(const FString& ContractAddress, const bool IncludeMetadata)
69+
{
70+
const TSuccessCallback<FSeqGetTokenSuppliesReturn> OnSuccess = [this, ContractAddress](const FSeqGetTokenSuppliesReturn& Supplies)
71+
{
72+
this->CallTokenSuppliesReceived(true, ContractAddress, Supplies);
73+
};
74+
75+
const FFailureCallback OnFailure = [this, ContractAddress](const FSequenceError& Error)
76+
{
77+
SEQ_LOG(Error, TEXT("Error getting token supplies: %s"), *Error.Message);
78+
79+
const FSeqGetTokenSuppliesReturn Supplies;
80+
this->CallTokenSuppliesReceived(false, ContractAddress, Supplies);
81+
};
82+
83+
FSeqGetTokenSuppliesArgs Args;
84+
Args.contractAddress = ContractAddress;
85+
Args.includeMetaData = IncludeMetadata;
86+
87+
this->Indexer->GetTokenSupplies(this->ChainId, Args, OnSuccess, OnFailure);
88+
}
89+
90+
void USequenceIndexerBP::GetTokenSuppliesMapAsync(const FSeqGetTokenSuppliesMapArgs& Args)
91+
{
92+
const TSuccessCallback<FSeqGetTokenSuppliesMapReturn> OnSuccess = [this, Args](const FSeqGetTokenSuppliesMapReturn& SuppliesMap)
93+
{
94+
this->CallTokenSuppliesMapReceived(true, Args, SuppliesMap);
95+
};
96+
97+
const FFailureCallback OnFailure = [this, Args](const FSequenceError& Error)
98+
{
99+
SEQ_LOG(Error, TEXT("Error getting token supplies map: %s"), *Error.Message);
100+
101+
const FSeqGetTokenSuppliesMapReturn SuppliesMap;
102+
this->CallTokenSuppliesMapReceived(false, Args, SuppliesMap);
103+
};
104+
105+
this->Indexer->GetTokenSuppliesMap(ChainId, Args, OnSuccess, OnFailure);
106+
}
107+
108+
void USequenceIndexerBP::GetTransactionHistoryAsync(const FSeqGetTransactionHistoryArgs& Args)
109+
{
110+
const TSuccessCallback<FSeqGetTransactionHistoryReturn> OnSuccess = [this, Args](const FSeqGetTransactionHistoryReturn& TransactionHistory)
111+
{
112+
this->CallTransactionHistoryReceived(true, Args, TransactionHistory);
113+
};
114+
115+
const FFailureCallback OnFailure = [this, Args](const FSequenceError& Error)
116+
{
117+
SEQ_LOG(Error, TEXT("Error getting transaction history: %s"), *Error.Message);
118+
119+
const FSeqGetTransactionHistoryReturn TransactionHistory;
120+
this->CallTransactionHistoryReceived(false, Args, TransactionHistory);
121+
};
122+
123+
this->Indexer->GetTransactionHistory(this->ChainId, Args, OnSuccess, OnFailure);
124+
}
125+
126+
void USequenceIndexerBP::CallEtherBalanceReceived(const bool Status, const FString& WalletAddress, const int64 Balance) const
127+
{
128+
if (this->EtherBalanceReceived.IsBound())
129+
this->EtherBalanceReceived.Broadcast(Status, WalletAddress, Balance);
130+
else
131+
SEQ_LOG(Error, TEXT("Nothing bound to delegate: EtherBalanceReceived"));
132+
}
133+
134+
void USequenceIndexerBP::CallTokenBalancesReceived(const bool Status, const FString& WalletAddress, const FString& ContractAddress, const FSeqGetTokenBalancesReturn& Balances) const
135+
{
136+
if (this->TokenBalancesReceived.IsBound())
137+
this->TokenBalancesReceived.Broadcast(Status, WalletAddress, ContractAddress, Balances);
138+
else
139+
SEQ_LOG(Error, TEXT("Nothing bound to delegate: TokenBalancesReceived"));
140+
}
141+
142+
void USequenceIndexerBP::CallTokenSuppliesReceived(const bool Status, const FString& ContractAddress, const FSeqGetTokenSuppliesReturn& Supplies) const
143+
{
144+
if (this->TokenSuppliesReceived.IsBound())
145+
this->TokenSuppliesReceived.Broadcast(Status, ContractAddress, Supplies);
146+
else
147+
SEQ_LOG(Error, TEXT("Nothing bound to delegate: TokenSuppliesReceived"));
148+
}
149+
150+
void USequenceIndexerBP::CallTokenSuppliesMapReceived(const bool Status, const FSeqGetTokenSuppliesMapArgs& Request, const FSeqGetTokenSuppliesMapReturn& SuppliesMap) const
151+
{
152+
if (this->TokenSuppliesMapReceived.IsBound())
153+
this->TokenSuppliesMapReceived.Broadcast(Status, Request, SuppliesMap);
154+
else
155+
SEQ_LOG(Error, TEXT("Nothing bound to delegate: TokenSuppliesMapReceived"));
156+
}
157+
158+
void USequenceIndexerBP::CallTransactionHistoryReceived(const bool Status, const FSeqGetTransactionHistoryArgs& Request, const FSeqGetTransactionHistoryReturn& TransactionHistory) const
159+
{
160+
if (this->TransactionHistoryReceived.IsBound())
161+
this->TransactionHistoryReceived.Broadcast(Status, Request, TransactionHistory);
162+
else
163+
SEQ_LOG(Error, TEXT("Nothing bound to delegate: TransactionHistoryReceived"));
164+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright 2024 Horizon Blockchain Games Inc. All rights reserved.
2+
3+
#include "Integrators/SequenceSdkBP.h"
4+
5+
#include "Engine/Engine.h"
6+
#include "Engine/GameInstance.h"
7+
#include "Util/Log.h"
8+
9+
USequenceSdkBP::USequenceSdkBP() { }
10+
11+
void USequenceSdkBP::SetupAsync()
12+
{
13+
// TODO: Integrate async setup process like querying remote chain configs
14+
this->CallSetupFinished();
15+
}
16+
17+
void USequenceSdkBP::CallSetupFinished() const
18+
{
19+
if (this->SetupFinished.IsBound())
20+
this->SetupFinished.Broadcast();
21+
else
22+
SEQ_LOG(Error, TEXT("Nothing bound to delegate: SetupFinished"));
23+
}

0 commit comments

Comments
 (0)