Skip to content

Commit ade64c2

Browse files
authored
Merge pull request #97 from dojoengine/update-1.3.1
feat: 1.3.1 update & token support
2 parents cf0803b + 8970ec8 commit ade64c2

33 files changed

+43191
-42991
lines changed
11.9 MB
Binary file not shown.

Assets/Dojo/Plugins/WebGL/torii_c.jslib

Lines changed: 70 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,37 @@ mergeInto(LibraryManager.library, {
1414

1515
dynCall_vi(cb, client.__destroy_into_raw());
1616
},
17+
// Returns an array of all tokens
18+
GetTokens: async function (clientPtr, contractAddresses, tokenIds, cb) {
19+
const client = wasm_bindgen.ToriiClient.__wrap(clientPtr);
20+
const tokens = await client.getTokens(JSON.parse(UTF8ToString(contractAddresses)), JSON.parse(UTF8ToString(tokenIds)));
21+
22+
const tokensString = JSON.stringify(tokens);
23+
const bufferSize = lengthBytesUTF8(tokensString) + 1;
24+
const buffer = _malloc(bufferSize);
25+
stringToUTF8(tokensString, buffer, bufferSize);
26+
27+
client.__destroy_into_raw();
28+
dynCall_vi(cb, buffer);
29+
},
30+
// Returns an array of all token balances
31+
GetTokenBalances: async function (clientPtr, contractAddresses, accountAddresses, tokenIds, cb) {
32+
const client = wasm_bindgen.ToriiClient.__wrap(clientPtr);
33+
const balances = await client.getTokenBalances(JSON.parse(UTF8ToString(contractAddresses)), JSON.parse(UTF8ToString(accountAddresses)), JSON.parse(UTF8ToString(tokenIds)));
34+
35+
const balancesString = JSON.stringify(balances);
36+
const bufferSize = lengthBytesUTF8(balancesString) + 1;
37+
const buffer = _malloc(bufferSize);
38+
stringToUTF8(balancesString, buffer, bufferSize);
39+
40+
client.__destroy_into_raw();
41+
dynCall_vi(cb, buffer);
42+
},
1743
// Returns a dictionary of all of the entities
18-
GetEntities: async function (clientPtr, queryString, cb) {
44+
GetEntities: async function (clientPtr, queryString, historical, cb) {
1945
const client = wasm_bindgen.ToriiClient.__wrap(clientPtr);
2046
const query = JSON.parse(UTF8ToString(queryString));
21-
let entities = await client.getEntities(query);
47+
let entities = await client.getEntities(query, historical);
2248

2349
// stringify the entities
2450
let entitiesString = JSON.stringify(entities);
@@ -31,10 +57,10 @@ mergeInto(LibraryManager.library, {
3157
dynCall_vi(cb, buffer);
3258
},
3359
// Returns a dictionary of all of the eventmessages
34-
GetEventMessages: async function (clientPtr, queryString, cb) {
60+
GetEventMessages: async function (clientPtr, queryString, historical, cb) {
3561
const client = wasm_bindgen.ToriiClient.__wrap(clientPtr);
3662
const query = JSON.parse(UTF8ToString(queryString));
37-
let entities = await client.getEventMessages(query);
63+
let entities = await client.getEventMessages(query, historical);
3864

3965
// stringify the entities
4066
let entitiesString = JSON.stringify(entities);
@@ -64,6 +90,43 @@ mergeInto(LibraryManager.library, {
6490
client.__destroy_into_raw();
6591
dynCall_vi(cb, buffer);
6692
},
93+
OnTokenUpdated: async function (clientPtr, contractAddresses, tokenIds, cb, subCb) {
94+
const client = wasm_bindgen.ToriiClient.__wrap(clientPtr);
95+
const subscription = await client.onTokenUpdated(
96+
JSON.parse(UTF8ToString(contractAddresses)),
97+
JSON.parse(UTF8ToString(tokenIds)),
98+
(token) => {
99+
const tokenString = JSON.stringify(token);
100+
const bufferSize = lengthBytesUTF8(tokenString) + 1;
101+
const buffer = _malloc(bufferSize);
102+
stringToUTF8(tokenString, buffer, bufferSize);
103+
104+
client.__destroy_into_raw();
105+
dynCall_vi(cb, buffer);
106+
});
107+
108+
client.__destroy_into_raw();
109+
dynCall_vi(subCb, subscription.__destroy_into_raw());
110+
},
111+
OnTokenBalanceUpdated: async function (clientPtr, contractAddresses, accountAddresses, tokenIds, cb, subCb) {
112+
const client = wasm_bindgen.ToriiClient.__wrap(clientPtr);
113+
const subscription = await client.onTokenBalanceUpdated(
114+
JSON.parse(UTF8ToString(contractAddresses)),
115+
JSON.parse(UTF8ToString(accountAddresses)),
116+
JSON.parse(UTF8ToString(tokenIds)),
117+
(balance) => {
118+
const balanceString = JSON.stringify(balance);
119+
const bufferSize = lengthBytesUTF8(balanceString) + 1;
120+
const buffer = _malloc(bufferSize);
121+
stringToUTF8(balanceString, buffer, bufferSize);
122+
123+
client.__destroy_into_raw();
124+
dynCall_vi(cb, buffer);
125+
});
126+
127+
client.__destroy_into_raw();
128+
dynCall_vi(subCb, subscription.__destroy_into_raw());
129+
},
67130
OnEntityUpdated: async function (clientPtr, clausesStr, cb, subCb) {
68131
let client = wasm_bindgen.ToriiClient.__wrap(clientPtr);
69132
let clauses = JSON.parse(UTF8ToString(clausesStr));
@@ -95,14 +158,12 @@ mergeInto(LibraryManager.library, {
95158
client.__destroy_into_raw();
96159
subscription.__destroy_into_raw();
97160
},
98-
OnEventMessageUpdated: async function (clientPtr, clausesStr, historical, cb, subCb) {
161+
OnEventMessageUpdated: async function (clientPtr, clausesStr, cb, subCb) {
99162
let client = wasm_bindgen.ToriiClient.__wrap(clientPtr);
100163
let clauses = JSON.parse(UTF8ToString(clausesStr));
101-
console.log(clauses);
102164

103165
const subscription = await client.onEventMessageUpdated(
104166
clauses,
105-
historical,
106167
(hashed_keys, models) => {
107168
// stringify the entities
108169
let modelsString = JSON.stringify(models);
@@ -121,12 +182,12 @@ mergeInto(LibraryManager.library, {
121182
client.__destroy_into_raw();
122183
dynCall_vi(subCb, subscription.__destroy_into_raw());
123184
},
124-
UpdateEventMessageSubscription: async function (clientPtr, subPtr, clausesStr, historical) {
185+
UpdateEventMessageSubscription: async function (clientPtr, subPtr, clausesStr) {
125186
let client = wasm_bindgen.ToriiClient.__wrap(clientPtr);
126187
let subscription = wasm_bindgen.Subscription.__wrap(subPtr);
127188
let clauses = JSON.parse(UTF8ToString(clausesStr));
128189

129-
await client.updateEventMessageSubscription(subscription, clauses, historical);
190+
await client.updateEventMessageSubscription(subscription, clauses);
130191

131192
client.__destroy_into_raw();
132193
subscription.__destroy_into_raw();
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:effab8e55a3c047598724870d1d6c482577f56bd3f5b7bdbc0aca94a4c75ecc9
3-
size 46295081
2+
oid sha256:7d2a1409d271211b55354e642b898589b2e129a2a03d8c75c3ca4afb58bc0036
3+
size 64934116
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:14bc91bbcaf575316aef9737bc6714acea407a4dd113300a8e172c9ac76a62e0
3-
size 119850760
2+
oid sha256:d466755bee80187faa0e9dd690e9e9c52573e3aeaecf86207aaddf415b741ddb
3+
size 144657920
19.3 MB
Binary file not shown.

Assets/Dojo/Runtime/Config/WorldManagerLocalConfig.asset

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,14 @@ MonoBehaviour:
1313
m_Name: WorldManagerLocalConfig
1414
m_EditorClassIdentifier:
1515
toriiUrl: http://localhost:8080
16-
rpcUrl: http://localhost:5050
1716
relayUrl: /ip4/127.0.0.1/tcp/9090
1817
relayWebrtcUrl: /ip4/127.0.0.1/udp/9091/webrtc-direct/certhash/uEiAS9CpA5yNwO7iidBM5f9FcPl67PwohiK-1J9BhnFMrHg
1918
worldAddress:
20-
hex: 0x025e74888e786245ec7aa93d846b2cc9e4b49a5244209860bbf4b384f654521b
19+
hex: 0x05cb84ccfa869ea8cf9acb0c77b2d1a67a7e9e8fd4a877a1c111e3c2b1eb0f03
2120
query:
2221
limit: 100
2322
offset: 0
23+
dont_include_hashed_keys: 0
24+
order_by: []
25+
entity_models: []
26+
entity_updated_after: 0

Assets/Dojo/Runtime/SynchronizationMaster.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public class SynchronizationMaster : MonoBehaviour
2828
public UnityEvent<GameObject> OnEntitySpawned;
2929
public UnityEvent<ModelInstance> OnModelUpdated;
3030
public UnityEvent<ModelInstance> OnEventMessage;
31+
public UnityEvent<TokenBalance> OnTokenBalanceUpdated;
32+
public UnityEvent<Token> OnTokenUpdated;
3133

3234
// Awake is called when the script instance is being loaded.
3335
void Awake()
@@ -158,6 +160,25 @@ public void RegisterEventMessageCallbacks()
158160
ToriiEvents.Instance.OnEventMessageUpdated += HandleEventMessage;
159161
}
160162

163+
// Register token callbacks
164+
public void RegisterTokenCallbacks()
165+
{
166+
ToriiEvents.Instance.OnTokenUpdated += (token) =>
167+
{
168+
OnTokenUpdated?.Invoke(token);
169+
};
170+
}
171+
172+
// Register token balance callbacks
173+
public void RegisterTokenBalanceCallbacks()
174+
{
175+
ToriiEvents.Instance.OnTokenBalanceUpdated += (tokenBalance) =>
176+
{
177+
OnTokenBalanceUpdated?.Invoke(tokenBalance);
178+
};
179+
}
180+
181+
161182
private ModelInstance[] LoadModels()
162183
{
163184
List<ModelInstance> models = new();

Assets/Dojo/Runtime/Torii/Token.cs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
using System.Numerics;
2+
using Dojo.Starknet;
3+
4+
namespace Dojo.Torii
5+
{
6+
public struct Token
7+
{
8+
public FieldElement contractAddress;
9+
public BigInteger tokenId;
10+
public string name;
11+
public string symbol;
12+
public int decimals;
13+
public string metadata;
14+
15+
public Token(FieldElement contractAddress, BigInteger tokenId, string name, string symbol, int decimals, string metadata)
16+
{
17+
this.contractAddress = contractAddress;
18+
this.tokenId = tokenId;
19+
this.name = name;
20+
this.symbol = symbol;
21+
this.decimals = decimals;
22+
this.metadata = metadata;
23+
}
24+
}
25+
26+
public struct TokenBalance
27+
{
28+
public BigInteger balance;
29+
public FieldElement accountAddress;
30+
public FieldElement contractAddress;
31+
public BigInteger tokenId;
32+
33+
public TokenBalance(BigInteger balance, FieldElement accountAddress, FieldElement contractAddress, BigInteger tokenId)
34+
{
35+
this.balance = balance;
36+
this.accountAddress = accountAddress;
37+
this.contractAddress = contractAddress;
38+
this.tokenId = tokenId;
39+
}
40+
}
41+
}

Assets/Dojo/Runtime/Torii/Token.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)