Skip to content

Commit 87c684b

Browse files
error handling, demo scene
1 parent 1a55ffd commit 87c684b

File tree

8 files changed

+1601
-262
lines changed

8 files changed

+1601
-262
lines changed

Assets/Plugin/thirdweb.jslib

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
mergeInto(LibraryManager.library, {
1+
var plugin = {
22
ThirdwebInvoke: function (taskId, route, payload, cb) {
33
// convert taskId from pointer to str and allocate it to keep in memory
44
var id = UTF8ToString(taskId);
@@ -13,7 +13,14 @@ mergeInto(LibraryManager.library, {
1313
var buffer = _malloc(bufferSize);
1414
stringToUTF8(returnStr, buffer, bufferSize);
1515
// callback into unity
16-
dynCall_vii(cb, idPtr, buffer);
16+
dynCall_viii(cb, idPtr, buffer, null);
17+
})
18+
.catch((err) => {
19+
var msg = err.message;
20+
var bufferSize = lengthBytesUTF8(msg) + 1;
21+
var buffer = _malloc(bufferSize);
22+
stringToUTF8(msg, buffer, bufferSize);
23+
dynCall_viii(cb, idPtr, null, buffer);
1724
});
1825
},
1926
ThirdwebInitialize: function (chain) {
@@ -26,15 +33,26 @@ mergeInto(LibraryManager.library, {
2633
var idPtr = _malloc(idSize);
2734
stringToUTF8(id, idPtr, idSize);
2835
// execute bridge call
29-
window.bridge.connect().then((address) => {
30-
if (address) {
31-
var bufferSize = lengthBytesUTF8(address) + 1;
36+
window.bridge
37+
.connect()
38+
.then((address) => {
39+
if (address) {
40+
var bufferSize = lengthBytesUTF8(address) + 1;
41+
var buffer = _malloc(bufferSize);
42+
stringToUTF8(address, buffer, bufferSize);
43+
dynCall_viii(cb, idPtr, buffer, null);
44+
} else {
45+
dynCall_viii(cb, idPtr, null, null);
46+
}
47+
})
48+
.catch((err) => {
49+
var msg = err.message;
50+
var bufferSize = lengthBytesUTF8(msg) + 1;
3251
var buffer = _malloc(bufferSize);
33-
stringToUTF8(address, buffer, bufferSize);
34-
dynCall_vii(cb, idPtr, buffer);
35-
} else {
36-
dynCall_vii(cb, idPtr, null);
37-
}
38-
});
52+
stringToUTF8(msg, buffer, bufferSize);
53+
dynCall_viii(cb, idPtr, null, buffer);
54+
});
3955
},
40-
});
56+
};
57+
58+
mergeInto(LibraryManager.library, plugin);

Assets/SDKTest.cs

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,13 @@
55
public class SDKTest : MonoBehaviour
66
{
77
private ThirdwebSDK sdk;
8-
private Contract contract;
98
private int count;
109
public TMP_Text loginButton;
11-
public TMP_Text fetchButton;
12-
public TMP_Text claimButton;
10+
public TMP_Text resultText;
1311

1412
void Start()
1513
{
1614
sdk = new ThirdwebSDK("goerli");
17-
contract = sdk.GetContract("0x2e01763fA0e15e07294D74B63cE4b526B321E389");
1815
}
1916

2017
void Update() {
@@ -29,33 +26,50 @@ public async void OnLoginCLick()
2926
loginButton.text = "Connected as: " + address.Substring(0, 6) + "...";
3027
}
3128

32-
public async void OnButtonClick()
29+
public async void GetERC721()
3330
{
31+
var contract = sdk.GetContract("0x2e01763fA0e15e07294D74B63cE4b526B321E389"); // NFT Drop
3432
Debug.Log("Button clicked");
3533
count++;
36-
fetchButton.text = "Fetching Token: " + count;
34+
resultText.text = "Fetching Token: " + count;
3735
NFT result = await contract.ERC721.Get(count.ToString());
3836
Debug.Log("name: " + result.metadata.name);
3937
Debug.Log("owner: " + result.owner);
40-
fetchButton.text = result.metadata.name;
38+
resultText.text = result.metadata.name;
4139
// int supply = await contract.ERC721.TotalClaimedSupply();
4240
// fetchButton.text = supply.ToString();
4341
// string uri = await contract.Read<string>("tokenURI", count);
4442
// fetchButton.text = uri;
4543
}
4644

47-
public async void OnWriteButtonClick()
45+
public async void GetERC1155()
4846
{
49-
Debug.Log("Claim button clicked");
47+
var contract = sdk.GetContract("0x86B7df0dc0A790789D8fDE4C604EF8187FF8AD2A"); // Edition Drop
48+
Debug.Log("Button clicked");
5049
count++;
50+
resultText.text = "Fetching Token: " + count;
51+
NFT result = await contract.ERC1155.Get(count.ToString());
52+
Debug.Log("name: " + result.metadata.name);
53+
Debug.Log("owner: " + result.owner);
54+
resultText.text = result.metadata.name + " (x" + result.quantityOwned + ")";
55+
// int supply = await contract.ERC721.TotalClaimedSupply();
56+
// fetchButton.text = supply.ToString();
57+
// string uri = await contract.Read<string>("tokenURI", count);
58+
// fetchButton.text = uri;
59+
}
60+
61+
public async void MintERC721()
62+
{
63+
var nftCollection = sdk.GetContract("0x8bFD00BD1D3A2778BDA12AFddE5E65Cca95082DF"); // NFT Collection
64+
Debug.Log("Claim button clicked");
5165
//var result = await contract.ERC721.Transfer("0x2247d5d238d0f9d37184d8332aE0289d1aD9991b", count.ToString());
52-
claimButton.text = "claiming...";
66+
resultText.text = "claiming...";
5367
// var result = await contract.ERC721.Claim(1);
5468
// Debug.Log("result id: " + result[0].id);
5569
// Debug.Log("result receipt: " + result[0].receipt.transactionHash);
5670
// claimButton.text = "claimed tokenId: " + result[0].id;
5771

58-
var nftCollection = sdk.GetContract("0x8bFD00BD1D3A2778BDA12AFddE5E65Cca95082DF");
72+
5973
var meta = new NFTMetadata();
6074
meta.name = "Unity NFT";
6175
meta.description = "Minted From Unity (signature)";
@@ -72,8 +86,16 @@ public async void OnWriteButtonClick()
7286
var p = await nftCollection.ERC721.signature.Generate(payload);
7387
Debug.Log("sig:" + p.signature);
7488
var result = await nftCollection.ERC721.signature.Mint(p);
75-
claimButton.text = "sigminted tokenId: " + result.id;
76-
89+
resultText.text = "sigminted tokenId: " + result.id;
7790
}
7891

92+
public async void MintERC1155()
93+
{
94+
var contract = sdk.GetContract("0x86B7df0dc0A790789D8fDE4C604EF8187FF8AD2A"); // Edition Drop
95+
Debug.Log("Claim button clicked");
96+
resultText.text = "claiming...";
97+
var result = await contract.ERC1155.Claim("0", 1);
98+
Debug.Log("result receipt: " + result[0].receipt.transactionHash);
99+
resultText.text = "claim successful";
100+
}
79101
}

0 commit comments

Comments
 (0)