@@ -219,7 +219,7 @@ public Task<string> Login(LoginConfig? config)
219219 // Called from browser
220220 public void OnLogin ( string json )
221221 {
222- loginTask ? . TrySetResult ( json ) ;
222+ HandleLoginResult ( json , loginTask ) ;
223223 }
224224
225225 /// <summary>
@@ -232,7 +232,7 @@ public Task<bool> Logout()
232232 LogoutParticle ( ) ;
233233 return logoutTask . Task ;
234234 }
235-
235+
236236 // Called from browser
237237 public void OnLogout ( )
238238 {
@@ -269,6 +269,7 @@ public Task<string> GetSecurityAccount()
269269 return getSecurityAccountTask . Task ;
270270 }
271271
272+ // Called from browser
272273 public void OnGetSecurityAccount ( string json )
273274 {
274275 getSecurityAccountTask ? . TrySetResult ( json ) ;
@@ -292,12 +293,21 @@ public void OpenBuy(string options)
292293 {
293294 OpenParticleBuy ( options ) ;
294295 }
295-
296+
297+ /// <summary>
298+ /// Get address base on current chainInfo
299+ /// </summary>
300+ /// <returns></returns>
296301 public string GetWalletAddress ( )
297302 {
298303 return GetParticleWalletAddress ( ) ;
299304 }
300305
306+ /// <summary>
307+ /// Switch chain
308+ /// </summary>
309+ /// <param name="chainInfo"></param>
310+ /// <returns></returns>
301311 public Task < string > SwitchChain ( ChainInfo chainInfo )
302312 {
303313 switchChainTask = new TaskCompletionSource < string > ( ) ;
@@ -311,6 +321,11 @@ public void OnSwitchChain(string json)
311321 switchChainTask ? . TrySetResult ( json ) ;
312322 }
313323
324+ /// <summary>
325+ /// EVM send transaction
326+ /// </summary>
327+ /// <param name="transaction">The EVM transaction requires a hexadecimal string.</param>
328+ /// <returns></returns>
314329 public Task < string > EVMSendTransaction ( string transaction )
315330 {
316331 var jsonString = "" ;
@@ -335,9 +350,9 @@ public void OnEVMSendTransaction(string json)
335350 }
336351
337352 /// <summary>
338- /// Personal sign
353+ /// EVM personal sign
339354 /// </summary>
340- /// <param name="message">Message </param>
355+ /// <param name="message">The message requires a hexadecimal string. </param>
341356 /// <param name="accountName">Optional, if you are using smart account, should provide this value</param>
342357 /// <returns></returns>
343358 public Task < string > EVMPersonalSign ( string message , [ CanBeNull ] AAAccountName accountName = null )
@@ -358,6 +373,11 @@ public void OnEVMPersonalSign(string json)
358373 }
359374
360375
376+ /// <summary>
377+ /// EVM personal sign unique
378+ /// </summary>
379+ /// <param name="message">The message requires a hexadecimal string.</param>
380+ /// <returns></returns>
361381 public Task < string > EVMPersonalSignUniq ( string message )
362382 {
363383 evmPersonalSignUniqTask = new TaskCompletionSource < string > ( ) ;
@@ -370,6 +390,11 @@ public void OnEVMPersonalSignUniq(string json)
370390 HandleSignResult ( json , evmPersonalSignUniqTask ) ;
371391 }
372392
393+ /// <summary>
394+ /// EVM sign typed data
395+ /// </summary>
396+ /// <param name="message">The message requires a json string.</param>
397+ /// <returns></returns>
373398 public Task < string > EVMSignTypedData ( string message )
374399 {
375400 evmSignTypedDataTask = new TaskCompletionSource < string > ( ) ;
@@ -382,6 +407,11 @@ public void OnEVMSignTypedData(string json)
382407 HandleSignResult ( json , evmSignTypedDataTask ) ;
383408 }
384409
410+ /// <summary>
411+ /// EVM sign typed data unique
412+ /// </summary>
413+ /// <param name="message">The message requires a json string.</param>
414+ /// <returns></returns>
385415 public Task < string > EVMSignTypedDataUniq ( string message )
386416 {
387417 evmSignTypedDataUniqTask = new TaskCompletionSource < string > ( ) ;
@@ -394,6 +424,11 @@ public void OnEVMSignTypedDataUniq(string json)
394424 HandleSignResult ( json , evmSignTypedDataUniqTask ) ;
395425 }
396426
427+ /// <summary>
428+ /// Solana sign and send transaction
429+ /// </summary>
430+ /// <param name="transaction">The Solana transaction requires a base58 string.</param>
431+ /// <returns></returns>
397432 public Task < string > SolanaSignAndSendTransaction ( string transaction )
398433 {
399434 solanaSignAndSendTransactionTask = new TaskCompletionSource < string > ( ) ;
@@ -406,6 +441,11 @@ public void OnSolanaSignAndSendTransaction(string json)
406441 HandleSignResult ( json , solanaSignAndSendTransactionTask ) ;
407442 }
408443
444+ /// <summary>
445+ /// Solana sign message
446+ /// </summary>
447+ /// <param name="transaction">The message requires a base58 string.</param>
448+ /// <returns></returns>
409449 public Task < string > SolanaSignMessage ( string transaction )
410450 {
411451 solanaSignMessageTask = new TaskCompletionSource < string > ( ) ;
@@ -418,6 +458,11 @@ public void OnSolanaSignMessage(string json)
418458 HandleSignResult ( json , solanaSignMessageTask ) ;
419459 }
420460
461+ /// <summary>
462+ /// Solana sign transaction
463+ /// </summary>
464+ /// <param name="transaction">The Solana transaction requires a base58 string.</param>
465+ /// <returns></returns>
421466 public Task < string > SolanaSignTransaction ( string transaction )
422467 {
423468 solanaSignTransactionTask = new TaskCompletionSource < string > ( ) ;
@@ -430,6 +475,11 @@ public void OnSolanaSignTransaction(string json)
430475 HandleSignResult ( json , solanaSignTransactionTask ) ;
431476 }
432477
478+ /// <summary>
479+ /// Solana sign all transactions
480+ /// </summary>
481+ /// <param name="transactions">Each Solana transaction requires a base58 string.</param>
482+ /// <returns></returns>
433483 public Task < List < string > > SolanaSignAllTransactions ( string [ ] transactions )
434484 {
435485 solanaSignAllTransactionsTask = new TaskCompletionSource < List < string > > ( ) ;
@@ -443,17 +493,22 @@ public void OnSolanaSignAllTransactions(string json)
443493 HandleSignResult ( json , solanaSignAllTransactionsTask ) ;
444494 }
445495
496+ private void HandleLoginResult < T > ( string json , TaskCompletionSource < T > task )
497+ {
498+ HandleResult ( json , task , "" ) ;
499+ }
500+
446501 private void HandleSignResult < T > ( string json , TaskCompletionSource < T > task )
502+ {
503+ HandleResult ( json , task , "signature" ) ;
504+ }
505+
506+ private void HandleResult < T > ( string json , TaskCompletionSource < T > task , string key )
447507 {
448508 Debug . Log ( $ "handle result { json } ") ;
449509 var jsonObject = JObject . Parse ( json ) ;
450-
451- if ( jsonObject . ContainsKey ( "signature" ) )
452- {
453- var signature = jsonObject [ "signature" ] ! . ToObject < T > ( ) ;
454- task ? . TrySetResult ( signature ) ;
455- }
456- else if ( jsonObject . ContainsKey ( "error" ) )
510+
511+ if ( jsonObject . ContainsKey ( "error" ) )
457512 {
458513 var error = jsonObject . GetValue ( "error" ) ;
459514
@@ -479,6 +534,15 @@ private void HandleSignResult<T>(string json, TaskCompletionSource<T> task)
479534 task . SetException ( new ErrorException ( 0 , "Unknown error: 'error' object missing" ) ) ;
480535 }
481536 }
537+ else if ( jsonObject . ContainsKey ( key ) )
538+ {
539+ var value = jsonObject [ key ] ! . ToObject < T > ( ) ;
540+ task ? . TrySetResult ( value ) ;
541+ }
542+ else
543+ {
544+ task ? . TrySetResult ( ( T ) ( object ) json ) ;
545+ }
482546 }
483547
484548 private string HexToString ( string hex )
0 commit comments