Skip to content
This repository was archived by the owner on Sep 4, 2024. It is now read-only.

Commit 2d003af

Browse files
committed
* Fix Relayer message class unable to deserialize
1 parent 6b9b8b2 commit 2d003af

File tree

8 files changed

+35
-36
lines changed

8 files changed

+35
-36
lines changed

Packages/link.magic.unity.sdk/Runtime/Magic.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public sealed class Magic
1616
//Constructor
1717
public Magic(string apikey, EthNetwork network = EthNetwork.Mainnet, string locale = "en-US")
1818
{
19-
var urlBuilder = new UrlBuilder(apikey, network, locale);
19+
var urlBuilder = new UrlBuilder(apikey, network, locale);
2020
UrlBuilder.Instance = urlBuilder;
2121

2222
Provider = new RpcProvider(urlBuilder);
@@ -39,5 +39,6 @@ public enum EthNetwork
3939
{
4040
Mainnet,
4141
Goerli,
42+
Sepolia
4243
}
4344
}

Packages/link.magic.unity.sdk/Runtime/Provider/RelayerRequestNethereum.cs renamed to Packages/link.magic.unity.sdk/Runtime/Provider/RelayerRequestForNethereum.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
using Nethereum.JsonRpc.Client.RpcMessages;
22
using Newtonsoft.Json;
33

4+
// This class is specifically designed to manage RpcRequestMessage objects, which does not support generic type inference for type T.
45
namespace MagicSDK.Provider
56
{
67
[JsonObject]
7-
internal class RelayerRequestNethereum
8+
internal class MagicRelayerRequest
89
{
910
[JsonProperty("msgType", Required = Required.Default)]
1011
internal string MsgType;
1112

1213
[JsonProperty("payload", Required = Required.Default)]
1314
internal RpcRequestMessage Payload;
1415

15-
internal RelayerRequestNethereum(string msgType, RpcRequestMessage payload)
16+
internal MagicRelayerRequest(string msgType, RpcRequestMessage payload)
1617
{
1718
MsgType = msgType;
1819
Payload = payload;
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using Nethereum.JsonRpc.Client.RpcMessages;
2+
using Newtonsoft.Json;
3+
using UnityEngine.Scripting;
4+
using System;
5+
using UnityEngine;
6+
7+
// This class is specifically designed to manage RpcResponseMessage objects, which does not support generic type inference for type T.
8+
namespace MagicSDK.Provider
9+
{
10+
[Serializable]
11+
public class RelayerResponseForNethereum
12+
{
13+
[SerializeField] internal string msgType;
14+
[SerializeField] internal RpcResponseMessage response;
15+
16+
[JsonConstructor] [Preserve]
17+
internal RelayerResponseForNethereum(string msgType, RpcResponseMessage response)
18+
{
19+
this.msgType = msgType;
20+
this.response = response;
21+
}
22+
}
23+
}
24+

Packages/link.magic.unity.sdk/Runtime/Provider/RelayerResponseNethereum.cs

Lines changed: 0 additions & 22 deletions
This file was deleted.

Packages/link.magic.unity.sdk/Runtime/Provider/RpcProvider.cs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@ protected internal RpcProvider(UrlBuilder urlBuilder)
2929

3030
private string _generateBoxUrl(UrlBuilder urlBuilder)
3131
{
32-
// encode options params to base 64
33-
var optionsJsonString = JsonUtility.ToJson(urlBuilder);
34-
Debug.Log(optionsJsonString);
35-
3632
var url = $"{UrlBuilder.Host}/send/?params={urlBuilder.EncodedParams}";
3733

3834
return url;
@@ -42,19 +38,17 @@ private string _generateBoxUrl(UrlBuilder urlBuilder)
4238
protected override async Task<RpcResponseMessage> SendAsync(RpcRequestMessage request, string route = null)
4339
{
4440
var msgType = $"{nameof(OutboundMessageType.MAGIC_HANDLE_REQUEST)}-{UrlBuilder.Instance.EncodedParams}";
45-
var relayerRequest = new RelayerRequestNethereum(msgType, request);
41+
var relayerRequest = new MagicRelayerRequest(msgType, request);
4642
var requestMsg = JsonConvert.SerializeObject(relayerRequest, _jsonSerializerSettings);
47-
Debug.Log($" MagicUnity 1{requestMsg}");
4843

4944
var promise = new TaskCompletionSource<RpcResponseMessage>();
5045

5146
// handle Response in the callback, so that webview is type free
5247
_relayer.Enqueue(requestMsg, (int)request.Id, responseMsg =>
5348
{
54-
var reader = new JsonTextReader(new StringReader(responseMsg));
55-
var serializer = JsonSerializer.Create(_jsonSerializerSettings);
56-
var relayerResponseNethereum = serializer.Deserialize<RelayerResponseNethereum>(reader);
57-
var result = relayerResponseNethereum?.Response;
49+
var relayerResponseNethereum = JsonConvert.DeserializeObject<RelayerResponseForNethereum>(responseMsg);
50+
51+
var result = relayerResponseNethereum?.response;
5852
return promise.TrySetResult(result);
5953
});
6054

@@ -74,6 +68,7 @@ protected override async Task<RpcResponseMessage[]> SendAsync(RpcRequestMessage[
7468
return await promise.Task;
7569
}
7670

71+
// This function is exclusively for Magic related API, as it supports generic types for deserialization
7772
protected internal async Task<TResult> MagicSendAsync<TParams, TResult>(MagicRpcRequest<TParams> magicRequest)
7873
{
7974
// Wrap with Relayer params and send to relayer

Packages/link.magic.unity.sdk/Runtime/Relayer/WebviewController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ private void _dequeue()
8787
{
8888
var message = _queue.Dequeue();
8989

90-
Debug.Log($"MagicUnity Send Message to Relayer: {message}");
90+
// Debug.Log($"MagicUnity Send Message to Relayer: {message}");
9191

9292
_webViewObject.EvaluateJS(
9393
$"window.dispatchEvent(new MessageEvent('message', {{ 'data': {message} }}));");

0 commit comments

Comments
 (0)