11using System ;
22using System . Collections . Generic ;
3+ using System . Numerics ;
34using Newtonsoft . Json ;
45using UnityEngine ;
56
@@ -59,6 +60,20 @@ public async void CreateSessionKey()
5960 }
6061 }
6162
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+
6277 public async void PreSignSessionKeyTxAsUserOpForLaterBroadcastingThroughThirdwebEngine ( )
6378 {
6479 try
@@ -87,6 +102,8 @@ public async void PreSignSessionKeyTxAsUserOpForLaterBroadcastingThroughThirdweb
87102 Uid = Guid . NewGuid ( ) . ToByteArray ( )
88103 } ;
89104
105+ Debug . Log ( JsonConvert . SerializeObject ( request ) ) ;
106+
90107 // Sign the typed data related to session keys
91108 var signature = await EIP712 . GenerateSignature_SmartAccount (
92109 "Account" ,
@@ -96,8 +113,21 @@ await ThirdwebManager.Instance.SDK.wallet.GetAddress(),
96113 request
97114 ) ;
98115
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+
99129 // 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 ( ) ) ;
101131
102132 // Set gas limit to avoid any potential estimation/simulation namely in WebGL
103133 tx . SetGasLimit ( "1500000" ) ;
0 commit comments