Skip to content

Commit d1d7651

Browse files
🐛 Handle rejection in WebGL wallet adapter (#167)
* 🐛 Handle rejection in WebGL wallet adapter * ⚡ Remove websocket dependency
1 parent 89b63bc commit d1d7651

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ mergeInto(LibraryManager.library, {
2424
Module.dynCall_vi(callback, walletsPtr);
2525
} catch (err) {
2626
console.error(err.message);
27+
Module.dynCall_vi(callback, null);
2728
}
2829
},
2930
ExternConnectWallet: async function (walletNamePtr, callback) {
@@ -41,6 +42,7 @@ mergeInto(LibraryManager.library, {
4142
Module.dynCall_vi(callback, pubKeyPtr);
4243
} catch (err) {
4344
console.error(err.message);
45+
Module.dynCall_vi(callback, null);
4446
}
4547
},
4648
ExternSignTransactionWallet: async function (walletNamePtr, transactionPtr, callback) {
@@ -61,6 +63,7 @@ mergeInto(LibraryManager.library, {
6163
Module.dynCall_vi(callback, txPtr);
6264
} catch (err) {
6365
console.error(err.message);
66+
Module.dynCall_vi(callback, null);
6467
}
6568
},
6669
ExternSignMessageWallet: async function (walletNamePtr, messagePtr, callback) {
@@ -82,6 +85,7 @@ mergeInto(LibraryManager.library, {
8285
Module.dynCall_vi(callback, signaturePtr);
8386
} catch (err) {
8487
console.error(err.message);
88+
Module.dynCall_vi(callback, null);
8589
}
8690
},
8791
ExternSignAllTransactionsWallet: async function (walletNamePtr, transactionsPtr, callback) {
@@ -113,6 +117,7 @@ mergeInto(LibraryManager.library, {
113117
Module.dynCall_vi(callback, txsPtr);
114118
} catch (err) {
115119
console.error(err.message);
120+
Module.dynCall_vi(callback, null);
116121
}
117122
},
118123
} );

Runtime/codebase/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,15 @@ protected override Task<Transaction[]> _SignAllTransactions(Transaction[] transa
191191
[MonoPInvokeCallback(typeof(Action<string>))]
192192
private static void OnWalletConnected(string walletPubKey)
193193
{
194+
if (walletPubKey == null)
195+
{
196+
_loginTaskCompletionSource.TrySetException(new Exception("Login cancelled"));
197+
_loginTaskCompletionSource.TrySetResult(null);
198+
return;
199+
}
194200
Debug.Log($"Wallet {walletPubKey} connected!");
195201
_account = new Account("", walletPubKey);
196-
_loginTaskCompletionSource.SetResult(_account);
202+
_loginTaskCompletionSource.TrySetResult(_account);
197203
}
198204

199205
/// <summary>
@@ -203,6 +209,12 @@ private static void OnWalletConnected(string walletPubKey)
203209
[MonoPInvokeCallback(typeof(Action<string>))]
204210
public static void OnTransactionSigned(string transaction)
205211
{
212+
if (transaction == null)
213+
{
214+
_signedTransactionTaskCompletionSource.TrySetException(new Exception("Transaction signing cancelled"));
215+
_signedTransactionTaskCompletionSource.TrySetResult(null);
216+
return;
217+
}
206218
var tx = Transaction.Deserialize(Convert.FromBase64String(transaction));
207219
_signedTransactionTaskCompletionSource.SetResult(tx);
208220
}
@@ -214,6 +226,12 @@ public static void OnTransactionSigned(string transaction)
214226
[MonoPInvokeCallback(typeof(Action<string>))]
215227
public static void OnAllTransactionsSigned(string signatures)
216228
{
229+
if (signatures == null)
230+
{
231+
_signedAllTransactionsTaskCompletionSource.TrySetException(new Exception("Transactions signing cancelled"));
232+
_signedAllTransactionsTaskCompletionSource.TrySetResult(null);
233+
return;
234+
}
217235
string[] signaturesList = signatures.Split(',');
218236
for (int i = 0; i < signaturesList.Length; i++)
219237
{
@@ -234,6 +252,12 @@ public static void OnAllTransactionsSigned(string signatures)
234252
[MonoPInvokeCallback(typeof(Action<string>))]
235253
public static void OnMessageSigned(string signature)
236254
{
255+
if (signature == null)
256+
{
257+
_signedMessageTaskCompletionSource.TrySetException(new Exception("Message signing cancelled"));
258+
_signedMessageTaskCompletionSource.TrySetResult(null);
259+
return;
260+
}
237261
_signedMessageTaskCompletionSource.SetResult(Convert.FromBase64String(signature));
238262
}
239263

0 commit comments

Comments
 (0)