1
1
using System ;
2
2
using System . Collections . Generic ;
3
+ using System . Numerics ;
3
4
using Newtonsoft . Json ;
4
5
using UnityEngine ;
5
6
@@ -59,6 +60,20 @@ public async void CreateSessionKey()
59
60
}
60
61
}
61
62
63
+ [ System . Serializable ]
64
+ public class SignerPermissionRequestWebGL
65
+ {
66
+ public string signer ;
67
+ public byte isAdmin ;
68
+ public List < string > approvedTargets ;
69
+ public BigInteger nativeTokenLimitPerTransaction ;
70
+ public BigInteger permissionStartTimestamp ;
71
+ public BigInteger permissionEndTimestamp ;
72
+ public BigInteger reqValidityStartTimestamp ;
73
+ public BigInteger reqValidityEndTimestamp ;
74
+ public string uid ;
75
+ }
76
+
62
77
public async void PreSignSessionKeyTxAsUserOpForLaterBroadcastingThroughThirdwebEngine ( )
63
78
{
64
79
try
@@ -87,6 +102,8 @@ public async void PreSignSessionKeyTxAsUserOpForLaterBroadcastingThroughThirdweb
87
102
Uid = Guid . NewGuid ( ) . ToByteArray ( )
88
103
} ;
89
104
105
+ Debug . Log ( JsonConvert . SerializeObject ( request ) ) ;
106
+
90
107
// Sign the typed data related to session keys
91
108
var signature = await EIP712 . GenerateSignature_SmartAccount (
92
109
"Account" ,
@@ -96,8 +113,21 @@ await ThirdwebManager.Instance.SDK.wallet.GetAddress(),
96
113
request
97
114
) ;
98
115
116
+ var requestWebGL = new SignerPermissionRequestWebGL ( )
117
+ {
118
+ signer = request . Signer ,
119
+ isAdmin = request . IsAdmin ,
120
+ approvedTargets = request . ApprovedTargets ,
121
+ nativeTokenLimitPerTransaction = request . NativeTokenLimitPerTransaction ,
122
+ permissionStartTimestamp = request . PermissionStartTimestamp ,
123
+ permissionEndTimestamp = request . PermissionEndTimestamp ,
124
+ reqValidityStartTimestamp = request . ReqValidityStartTimestamp ,
125
+ reqValidityEndTimestamp = request . ReqValidityEndTimestamp ,
126
+ uid = Utils . ToBytes32HexString ( request . Uid )
127
+ } ;
128
+
99
129
// Prepare the transaction
100
- var tx = await accountContract . Prepare ( "setPermissionsForSigner" , request , signature . HexStringToByteArray ( ) ) ;
130
+ var tx = await accountContract . Prepare ( "setPermissionsForSigner" , Utils . IsWebGLBuild ( ) ? requestWebGL : request , signature . HexStringToByteArray ( ) ) ;
101
131
102
132
// Set gas limit to avoid any potential estimation/simulation namely in WebGL
103
133
tx . SetGasLimit ( "1500000" ) ;
0 commit comments