Skip to content

Commit 26fac2e

Browse files
committed
WebGL support for offline signing types
1 parent 2348b5d commit 26fac2e

File tree

2 files changed

+30123
-29919
lines changed

2 files changed

+30123
-29919
lines changed

Assets/Thirdweb/Examples/Scripts/Prefabs/Prefab_SmartWallet.cs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Numerics;
34
using Newtonsoft.Json;
45
using 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

Comments
 (0)