1
1
/// --- Thirdweb Brige ---
2
2
import { ethers } from "./ethers.js" ;
3
3
import { ThirdwebSDK } from "https://esm.sh/@thirdweb-dev/sdk@nightly?bundle" ;
4
- // import { ethers } from "https://cdn.ethers.io/lib/ethers-5.2.esm.min.js";
4
+
5
5
// big number transform
6
6
const bigNumberReplacer = ( key , value ) => {
7
7
// if we find a BigNumber then make it into a string (since that is safe)
@@ -20,7 +20,7 @@ const bigNumberReplacer = (key, value) => {
20
20
const w = window ;
21
21
w . bridge = { } ;
22
22
w . bridge . initialize = ( chain , options ) => {
23
- console . log ( "bridge.initialize ", chain , options ) ;
23
+ console . debug ( "thirdwebSDK initialization: ", chain , options ) ;
24
24
const sdk = new ThirdwebSDK ( chain , JSON . parse ( options ) ) ;
25
25
w . thirdweb = sdk ;
26
26
} ;
@@ -31,14 +31,11 @@ w.bridge.connect = async () => {
31
31
const provider = new ethers . providers . Web3Provider ( w . ethereum ) ;
32
32
await provider . send ( "eth_requestAccounts" , [ ] ) ;
33
33
if ( w . thirdweb ) {
34
- console . log ( "connecting SDK" ) ;
35
34
w . thirdweb . updateSignerOrProvider ( provider . getSigner ( ) ) ;
36
35
w . ethereum . on ( "accountsChanged" , async ( accounts ) => {
37
- console . log ( "accountsChanged" , accounts ) ;
38
36
w . thirdweb . updateSignerOrProvider ( provider . getSigner ( ) ) ;
39
37
} ) ;
40
38
w . ethereum . on ( "chainChanged" , async ( chain ) => {
41
- console . log ( "chainChanged" , chain ) ;
42
39
w . thirdweb . updateSignerOrProvider ( provider . getSigner ( ) ) ;
43
40
} ) ;
44
41
return await w . thirdweb . wallet . getAddress ( ) ;
@@ -57,7 +54,7 @@ w.bridge.switchNetwork = async (chainId) => {
57
54
if ( chainId ) {
58
55
await window . ethereum . request ( {
59
56
method : "wallet_switchEthereumChain" ,
60
- params : [ { chainId : "0x" + chainId . toString ( 16 ) } ] , // chainId must be in hexadecimal numbers
57
+ params : [ { chainId : "0x" + chainId . toString ( 16 ) } ] ,
61
58
} ) ;
62
59
} else {
63
60
console . error ( "Error switrching network" ) ;
@@ -82,7 +79,7 @@ w.bridge.invoke = async (route, payload) => {
82
79
return arg ;
83
80
}
84
81
} ) ;
85
- console . log ( "invoke called ", route , parsedArgs ) ;
82
+ console . debug ( "thirdwebSDK call: ", route , parsedArgs ) ;
86
83
87
84
// wallet call
88
85
if ( addrOrSDK . startsWith ( "sdk" ) ) {
@@ -91,7 +88,6 @@ w.bridge.invoke = async (route, payload) => {
91
88
prop = firstArg [ 1 ] ;
92
89
}
93
90
if ( prop && routeArgs . length === 2 ) {
94
- // TODO assumes contract call
95
91
const result = await w . thirdweb [ prop ] [ routeArgs [ 1 ] ] ( ...parsedArgs ) ;
96
92
return JSON . stringify ( { result : result } , bigNumberReplacer ) ;
97
93
} else {
@@ -102,13 +98,16 @@ w.bridge.invoke = async (route, payload) => {
102
98
103
99
// contract call
104
100
if ( addrOrSDK . startsWith ( "0x" ) ) {
105
- let type = undefined ;
101
+ let typeOrAbi = undefined ;
106
102
if ( firstArg . length > 1 ) {
107
- type = firstArg [ 1 ] ;
103
+ try {
104
+ typeOrAbi = JSON . parse ( firstArg [ 1 ] ) ; // try to parse ABI
105
+ } catch ( e ) {
106
+ typeOrAbi = firstArg [ 1 ] ;
107
+ }
108
108
}
109
- const contract = await w . thirdweb . getContract ( addrOrSDK , type ) ;
109
+ const contract = await w . thirdweb . getContract ( addrOrSDK , typeOrAbi ) ;
110
110
if ( routeArgs . length === 2 ) {
111
- // TODO assumes contract call
112
111
const result = await contract [ routeArgs [ 1 ] ] ( ...parsedArgs ) ;
113
112
return JSON . stringify ( { result : result } , bigNumberReplacer ) ;
114
113
} else if ( routeArgs . length === 3 ) {
0 commit comments