Skip to content

Commit b84ba91

Browse files
author
Zhichao Link
committed
sync with iOS 1.0.0
1 parent 9d1e2d5 commit b84ba91

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+6452
-3419
lines changed

Assembly-CSharp-Editor.csproj

Lines changed: 482 additions & 200 deletions
Large diffs are not rendered by default.

Assembly-CSharp.csproj

Lines changed: 157 additions & 32 deletions
Large diffs are not rendered by default.

Assets/ParticleNetwork/Mobile/Demo/AuthDemo.cs

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public async void Login()
3434
{
3535
// login email
3636
var nativeResultData = await ParticleAuthService.Instance.Login(LoginType.PHONE, null, SupportAuthType.ALL,
37-
false, SocialLoginPrompt.SelectAccount);
37+
SocialLoginPrompt.SelectAccount);
3838
Debug.Log(nativeResultData.data);
3939

4040
if (nativeResultData.isSuccess)
@@ -204,12 +204,18 @@ public async void SignMessage()
204204
public async void SignTypedData()
205205
{
206206
var publicAddress = GetAddress();
207-
var txtAsset = Resources.Load<TextAsset>("TypedDataV1");
207+
var txtAsset = Resources.Load<TextAsset>("TypedDataV4");
208208
string typedData = txtAsset.text;
209209

210+
var chainId = ParticleNetwork.GetChainInfo().getChainId();
211+
JObject json = JObject.Parse(typedData);
212+
json["domain"]["chainId"] = chainId;
213+
string newTypedData = json.ToString();
214+
210215
var nativeResultData =
211-
await ParticleAuthService.Instance.SignTypedData(typedData,
212-
SignTypedDataVersion.V1);
216+
await ParticleAuthService.Instance.SignTypedData(newTypedData,
217+
SignTypedDataVersion.V4);
218+
213219
Debug.Log(nativeResultData.data);
214220

215221
if (nativeResultData.isSuccess)
@@ -231,10 +237,19 @@ public void SetLanguage()
231237
ParticleNetwork.SetLanguage(language);
232238
}
233239

234-
public void SetInterfaceStyle()
240+
public void SetAppearance()
235241
{
236-
UserInterfaceStyle style = UserInterfaceStyle.DARK;
237-
ParticleNetwork.SetInterfaceStyle(style);
242+
ParticleNetwork.SetAppearance(Appearance.DARK);
243+
}
244+
245+
public void SetFiatCoin()
246+
{
247+
ParticleNetwork.SetFiatCoin(FiatCoin.KRW);
248+
}
249+
250+
public void SetWebAuthConfig()
251+
{
252+
ParticleNetwork.SetWebAuthConfig(true, Appearance.DARK);
238253
}
239254

240255

@@ -304,7 +319,8 @@ public void SetChainInfoSync()
304319
public void GetChainInfo()
305320
{
306321
var chainInfo = ParticleNetwork.GetChainInfo();
307-
Debug.Log($"chain name {chainInfo.getChainName()}, chain id {chainInfo.getChainId()}, chain id name {chainInfo.getChainIdName()}");
322+
Debug.Log(
323+
$"chain name {chainInfo.getChainName()}, chain id {chainInfo.getChainId()}, chain id name {chainInfo.getChainIdName()}");
308324
}
309325

310326
public void SetiOSModalStyle()
@@ -347,7 +363,8 @@ public async void OpenAccountAndSecurity()
347363

348364
public void OpenWebWallet()
349365
{
350-
ParticleAuthServiceInteraction.OpenWebWallet();
366+
var jsonString = "";
367+
ParticleAuthServiceInteraction.OpenWebWallet(jsonString);
351368
}
352369

353370
public void HasMasterPassword()
@@ -381,7 +398,8 @@ public async void GetSecurityAccount()
381398
var hasSecurityAccount = !string.IsNullOrEmpty(securityAccount.Email) ||
382399
!string.IsNullOrEmpty(securityAccount.Phone);
383400
Debug.Log(securityAccount);
384-
Debug.Log($"HasMasterPassword {securityAccount.HasMasterPassword}, HasPaymentPassword {securityAccount.HasPaymentPassword}, HasSecurityAccount {hasSecurityAccount}");
401+
Debug.Log(
402+
$"HasMasterPassword {securityAccount.HasMasterPassword}, HasPaymentPassword {securityAccount.HasPaymentPassword}, HasSecurityAccount {hasSecurityAccount}");
385403
}
386404
else
387405
{

Assets/ParticleNetwork/Mobile/Demo/ChainChoice.cs

Lines changed: 62 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
1+
using System;
22
using System.Collections.Generic;
3+
using System.Linq;
34
using Network.Particle.Scripts.Model;
45
using Network.Particle.Scripts.Singleton;
6+
using UnityEditor;
57
using UnityEngine;
68
using UnityEngine.Events;
7-
using UnityEngine.UI;
9+
using Button = UnityEngine.UI.Button;
810

911
public class ChainChoice : SingletonMonoBehaviour<ChainChoice>
1012
{
@@ -15,101 +17,49 @@ public class ChainChoice : SingletonMonoBehaviour<ChainChoice>
1517
void Start()
1618
{
1719
List<ChainInfo> chainInfos = new List<ChainInfo>();
18-
chainInfos.Add(new SolanaChain(SolanaChainId.Mainnet));
19-
chainInfos.Add(new SolanaChain(SolanaChainId.Devnet));
20-
chainInfos.Add(new SolanaChain(SolanaChainId.Testnet));
21-
chainInfos.Add(new EthereumChain(EthereumChainId.Mainnet));
22-
chainInfos.Add(new EthereumChain(EthereumChainId.Goerli));
23-
24-
chainInfos.Add(new BSCChain(BscChainId.Mainnet));
25-
chainInfos.Add(new BSCChain(BscChainId.Testnet));
26-
27-
chainInfos.Add(new PolygonChain(PolygonChainId.Mainnet));
28-
chainInfos.Add(new PolygonChain(PolygonChainId.Mumbai));
29-
30-
chainInfos.Add(new AvalancheChain(AvalancheChainId.Mainnet));
31-
chainInfos.Add(new AvalancheChain(AvalancheChainId.Testnet));
32-
33-
chainInfos.Add(new MoonbeamChain(MoonbeamChainId.Mainnet));
34-
chainInfos.Add(new MoonbeamChain(MoonbeamChainId.Testnet));
35-
36-
chainInfos.Add(new MoonriverChain(MoonriverChainId.Mainnet));
37-
chainInfos.Add(new MoonriverChain(MoonriverChainId.Testnet));
38-
39-
chainInfos.Add(new HecoChain(HecoChainId.Mainnet));
40-
41-
chainInfos.Add(new FantomChain(FantomChainId.Mainnet));
42-
chainInfos.Add(new FantomChain(FantomChainId.Testnet));
43-
44-
chainInfos.Add(new ArbitrumChain(ArbitrumChainId.One));
45-
chainInfos.Add(new ArbitrumChain(ArbitrumChainId.Nova));
46-
chainInfos.Add(new ArbitrumChain(ArbitrumChainId.Goerli));
47-
48-
chainInfos.Add(new HarmonyChain(HarmonyChainId.Mainnet));
49-
chainInfos.Add(new HarmonyChain(HarmonyChainId.Testnet));
50-
51-
chainInfos.Add(new AuroraChain(AuroraChainId.Mainnet));
52-
chainInfos.Add(new AuroraChain(AuroraChainId.Testnet));
53-
54-
chainInfos.Add(new KccChain(KccChainId.Mainnet));
55-
chainInfos.Add(new KccChain(KccChainId.Testnet));
56-
57-
chainInfos.Add(new OptimismChain(OptimismChainId.Mainnet));
58-
chainInfos.Add(new OptimismChain(OptimismChainId.Goerli));
59-
60-
chainInfos.Add(new PlatONChain(PlatONChainId.Mainnet));
61-
chainInfos.Add(new PlatONChain(PlatONChainId.Testnet));
62-
63-
chainInfos.Add(new TronChain(TronChainId.Mainnet));
64-
chainInfos.Add(new TronChain(TronChainId.Shasta));
65-
chainInfos.Add(new TronChain(TronChainId.Nile));
66-
67-
chainInfos.Add(new OKCChain(OKCChainId.Mainnet));
68-
chainInfos.Add(new OKCChain(OKCChainId.Testnet));
69-
70-
chainInfos.Add(new ThunderCoreChain(ThunderCoreChainId.Mainnet));
71-
chainInfos.Add(new ThunderCoreChain(ThunderCoreChainId.Testnet));
72-
73-
chainInfos.Add(new CronosChain(CronosChainId.Mainnet));
74-
chainInfos.Add(new CronosChain(CronosChainId.Testnet));
20+
chainInfos.AddRange(CreateInstancesFromEnum<SolanaChainId, SolanaChain>());
21+
chainInfos.AddRange(CreateInstancesFromEnum<EthereumChainId, EthereumChain>());
22+
chainInfos.AddRange(CreateInstancesFromEnum<AvalancheChainId, AvalancheChain>());
23+
chainInfos.AddRange(CreateInstancesFromEnum<PolygonChainId, PolygonChain>());
24+
chainInfos.AddRange(CreateInstancesFromEnum<MoonbeamChainId, MoonbeamChain>());
25+
chainInfos.AddRange(CreateInstancesFromEnum<MoonriverChainId, MoonriverChain>());
26+
chainInfos.AddRange(CreateInstancesFromEnum<HecoChainId, HecoChain>());
27+
chainInfos.AddRange(CreateInstancesFromEnum<BSCChainId, BSCChain>());
28+
chainInfos.AddRange(CreateInstancesFromEnum<FantomChainId, FantomChain>());
29+
chainInfos.AddRange(CreateInstancesFromEnum<ArbitrumChainId, ArbitrumChain>());
30+
chainInfos.AddRange(CreateInstancesFromEnum<HarmonyChainId, HarmonyChain>());
31+
chainInfos.AddRange(CreateInstancesFromEnum<AuroraChainId, AuroraChain>());
32+
chainInfos.AddRange(CreateInstancesFromEnum<KccChainId, KccChain>());
33+
chainInfos.AddRange(CreateInstancesFromEnum<OptimismChainId, OptimismChain>());
34+
chainInfos.AddRange(CreateInstancesFromEnum<PlatONChainId, PlatONChain>());
35+
chainInfos.AddRange(CreateInstancesFromEnum<TronChainId, TronChain>());
36+
chainInfos.AddRange(CreateInstancesFromEnum<OKCChainId, OKCChain>());
37+
chainInfos.AddRange(CreateInstancesFromEnum<ThunderCoreChainId, ThunderCoreChain>());
38+
chainInfos.AddRange(CreateInstancesFromEnum<CronosChainId, CronosChain>());
39+
chainInfos.AddRange(CreateInstancesFromEnum<OasisEmeraldChainId, OasisEmeraldChain>());
40+
chainInfos.AddRange(CreateInstancesFromEnum<GnosisChainId, GnosisChain>());
41+
chainInfos.AddRange(CreateInstancesFromEnum<CeloChainId, CeloChain>());
42+
chainInfos.AddRange(CreateInstancesFromEnum<KlaytnChainId, KlaytnChain>());
43+
chainInfos.AddRange(CreateInstancesFromEnum<ScrollChainId, ScrollChain>());
44+
chainInfos.AddRange(CreateInstancesFromEnum<ZkSyncChainId, ZkSyncChain>());
45+
chainInfos.AddRange(CreateInstancesFromEnum<MetisChainId, MetisChain>());
46+
chainInfos.AddRange(CreateInstancesFromEnum<ConfluxESpaceChainId, ConfluxESpaceChain>());
47+
chainInfos.AddRange(CreateInstancesFromEnum<MapoChainId, MapoChain>());
48+
chainInfos.AddRange(CreateInstancesFromEnum<PolygonZkEVMChainId, PolygonZkEVMChain>());
49+
chainInfos.AddRange(CreateInstancesFromEnum<BSCChainId, BSCChain>());
50+
chainInfos.AddRange(CreateInstancesFromEnum<LineaChainId, LineaChain>());
51+
chainInfos.AddRange(CreateInstancesFromEnum<ComboChainId, ComboChain>());
52+
chainInfos.AddRange(CreateInstancesFromEnum<MantaChainId, MantaChain>());
53+
chainInfos.AddRange(CreateInstancesFromEnum<ZkMetaChainId, ZkMetaChain>());
54+
chainInfos.AddRange(CreateInstancesFromEnum<OpBNBChainId, OpBNBChain>());
55+
chainInfos.AddRange(CreateInstancesFromEnum<OKBCChainId, OKBCChain>());
56+
chainInfos.AddRange(CreateInstancesFromEnum<TaikoChainId, TaikoChain>());
57+
chainInfos.AddRange(CreateInstancesFromEnum<ReadOnChainId, ReadOnChain>());
58+
chainInfos.AddRange(CreateInstancesFromEnum<ZoraChainId, ZoraChain>());
59+
chainInfos.AddRange(CreateInstancesFromEnum<PGNChainId, PGNChain>());
60+
chainInfos.AddRange(CreateInstancesFromEnum<MantaChainId, MantaChain>());
61+
chainInfos.AddRange(CreateInstancesFromEnum<NebulaChainId, NebulaChain>());
7562

76-
chainInfos.Add(new OasisEmeraldChain(OasisEmeraldChainId.Mainnet));
77-
chainInfos.Add(new OasisEmeraldChain(OasisEmeraldChainId.Testnet));
78-
79-
chainInfos.Add(new GnosisChain(GnosisChainId.Mainnet));
80-
chainInfos.Add(new GnosisChain(GnosisChainId.Testnet));
81-
82-
chainInfos.Add(new CeloChain(CeloChainId.Mainnet));
83-
chainInfos.Add(new CeloChain(CeloChainId.Testnet));
84-
85-
chainInfos.Add(new KlaytnChain(KlaytnChainId.Mainnet));
86-
chainInfos.Add(new KlaytnChain(KlaytnChainId.Testnet));
87-
88-
chainInfos.Add(new ScrollChain(ScrollChainId.Testnet));
89-
90-
chainInfos.Add(new ZkSyncChain(ZkSyncChainId.Mainnet));
91-
chainInfos.Add(new ZkSyncChain(ZkSyncChainId.Testnet));
92-
93-
chainInfos.Add(new MetisChain(MetisChainId.Mainnet));
94-
chainInfos.Add(new MetisChain(MetisChainId.Testnet));
95-
96-
chainInfos.Add(new ConfluxESpaceChain(ConfluxESpaceChainId.Mainnet));
97-
chainInfos.Add(new ConfluxESpaceChain(ConfluxESpaceChainId.Testnet));
98-
99-
chainInfos.Add(new MapoChain(MapoChainId.Mainnet));
100-
chainInfos.Add(new MapoChain(MapoChainId.Testnet));
101-
102-
chainInfos.Add(new PolygonZkEVMChain(PolygonZkEVMChainId.Mainnet));
103-
chainInfos.Add(new PolygonZkEVMChain(PolygonZkEVMChainId.Testnet));
104-
105-
chainInfos.Add(new BaseChain(BaseChainId.Testnet));
106-
chainInfos.Add(new LineaChain(LineaChainId.Testnet));
107-
chainInfos.Add(new ComboChain(ComboChainId.Testnet));
108-
chainInfos.Add(new MantleChain(MantleChainId.Testnet));
109-
chainInfos.Add(new ZkMetaChain(ZkMetaChainId.Testnet));
110-
chainInfos.Add(new OpBNBChain(OpBNBChainId.Testnet));
111-
chainInfos.Add(new OKBCChain(OKBCChainId.Testnet));
112-
chainInfos.Add(new TaikoChain(TaikoChainId.Testnet));
11363

11464
foreach (var chainInfo in chainInfos)
11565
{
@@ -125,6 +75,22 @@ void Start()
12575
}
12676
}
12777

78+
public static IEnumerable<TClass> CreateInstancesFromEnum<TEnum, TClass>()
79+
where TEnum : Enum
80+
where TClass : BaseChainInfo
81+
{
82+
var constructorInfo = typeof(TClass).GetConstructor(new[] { typeof(TEnum) });
83+
84+
if (constructorInfo == null)
85+
{
86+
throw new ArgumentException($"Type {typeof(TClass)} does not have a constructor that takes a {typeof(TEnum)} parameter.");
87+
}
88+
89+
return Enum.GetValues(typeof(TEnum))
90+
.Cast<TEnum>()
91+
.Select(value => (TClass)constructorInfo.Invoke(new object[] { value }));
92+
}
93+
12894
public void Show(UnityAction<ChainInfo> unityAction)
12995
{
13096
this.unityAction = unityAction;

Assets/ParticleNetwork/Mobile/Demo/ConnectDemo.cs

Lines changed: 6 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -249,10 +249,14 @@ public async void SignTypedData()
249249
if (string.IsNullOrEmpty(publicAddress)) throw new Exception("publicAddress is null, connect first");
250250
var txtAsset = Resources.Load<TextAsset>("TypedDataV4");
251251
string typedData = txtAsset.text;
252-
Debug.Log(typedData);
252+
253+
var chainId = ParticleNetwork.GetChainInfo().getChainId();
254+
JObject json = JObject.Parse(typedData);
255+
json["domain"]["chainId"] = chainId;
256+
string newTypedData = json.ToString();
253257

254258
var nativeResultData =
255-
await ParticleConnect.Instance.SignTypedData(this._walletType, publicAddress, typedData);
259+
await ParticleConnect.Instance.SignTypedData(this._walletType, publicAddress, newTypedData);
256260
Debug.Log(nativeResultData.data);
257261

258262
if (nativeResultData.isSuccess)
@@ -410,33 +414,6 @@ public async void ExportPrivateKey()
410414
}
411415
}
412416

413-
public void SetChainInfoSync()
414-
{
415-
var result = ParticleConnectInteraction.SetChainInfo(_chainInfo);
416-
Debug.Log("SetChainInfoSync:" + result);
417-
Tips.Instance.Show("SetChainInfoSync:" + result);
418-
}
419-
420-
public async void SetChainInfoAsync()
421-
{
422-
var nativeResultData =
423-
await ParticleConnect.Instance.SetChainInfoAsync(_chainInfo);
424-
Debug.Log(nativeResultData.data);
425-
426-
if (nativeResultData.isSuccess)
427-
{
428-
Tips.Instance.Show($"{MethodBase.GetCurrentMethod()?.Name} Success:{nativeResultData.data}");
429-
Debug.Log("SetChainInfoAsync:" + nativeResultData.data);
430-
Tips.Instance.Show(nativeResultData.data);
431-
}
432-
else
433-
{
434-
Tips.Instance.Show($"{MethodBase.GetCurrentMethod()?.Name} Failed:{nativeResultData.data}");
435-
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
436-
Debug.Log(errorData);
437-
}
438-
}
439-
440417
public async void SwitchEthereumChain()
441418
{
442419
var nativeResultData =

Assets/ParticleNetwork/Mobile/Demo/Example.cs

Lines changed: 9 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ public void Init()
2525
ParticleConnectInteraction.Init(chainInfo, metadata);
2626

2727
// Set support chain info array. you can a chain info array.
28-
ParticleWalletGUI.SupportChain(new[] { chainInfo });
28+
ParticleWalletGUI.SetSupportChain(new[] { chainInfo });
2929
// Disable buy.
30-
ParticleWalletGUI.EnablePay(false);
30+
ParticleWalletGUI.SetPayDisabled(false);
3131
// Disable testnet if release.
32-
ParticleWalletGUI.ShowTestNetwork(false);
32+
ParticleWalletGUI.SetShowTestNetwork(false);
3333
// Disable wallet manage page if you only support one wallet.
34-
ParticleWalletGUI.ShowManageWallet(false);
34+
ParticleWalletGUI.SetShowManageWallet(false);
3535
// Use this method to control dark mode or light mode. you can call this method with your button.
36-
ParticleNetwork.SetInterfaceStyle(UserInterfaceStyle.DARK);
36+
ParticleNetwork.SetAppearance(Appearance.DARK);
3737

3838
// Manage Tokens and NFTs, set show only native and your tokens, NFTs, don't show other tokens and NFTs.
3939
ParticleWalletGUI.SetDisplayTokenAddresses(new[] { "Your token address" });
@@ -47,16 +47,16 @@ public void Init()
4747
ParticleWalletGUI.SetSupportAddToken(false);
4848

4949
// Control UI pages native currency symbol
50-
ParticleWalletGUI.SetFiatCoin("HKD");
50+
ParticleNetwork.SetFiatCoin(FiatCoin.HKD);
5151

5252
// Set language
53-
ParticleWalletGUI.SetLanguage(Language.KO);
53+
ParticleNetwork.SetLanguage(Language.KO);
5454

5555
// Control if show language setting button in setting page.
56-
ParticleWalletGUI.ShowLanguageSetting(true);
56+
ParticleWalletGUI.SetShowLanguageSetting(true);
5757

5858
// Control if show appearance setting button in setting page.
59-
ParticleWalletGUI.ShowAppearanceSetting(true);
59+
ParticleWalletGUI.SetShowAppearanceSetting(true);
6060
}
6161

6262
public async void Login()
@@ -83,40 +83,6 @@ public void ShowWallet()
8383
ParticleWalletGUI.NavigatorWallet();
8484
}
8585

86-
public void SwitchChainBetweenEvm()
87-
{
88-
// for example if you both support Avalanche and Ethereum. and you init Avalanche.mainnet.
89-
// then you want to switch to Ethereum.mainnet.
90-
// Because switch from a evm chain to another evm chain, public address is the same, not changed.
91-
// It is a sync method. will return ture=success or false=failure immediately.
92-
var result = ParticleConnectInteraction.SetChainInfo(new EthereumChain(EthereumChainId.Mainnet));
93-
}
94-
95-
public async void SwitchChainBetweenEvmAndSolana()
96-
{
97-
// for example if you both support Solana and Avalanche, and you init Avalanche.mainnet.
98-
// then you want to switch to Solana.mainnet.
99-
// Because switch from a evm chain to a solana chain, public address should change,
100-
// It is a async method.
101-
// If it is the first time your user switch from evm to solana, This method will open web page and
102-
// create a solana address in seconds, then turn chain info to solana.mainnet.
103-
// If it is not the first time, it will switch to solana.mainnet immediately.
104-
var nativeResultData =
105-
await ParticleConnect.Instance.SetChainInfoAsync(new SolanaChain(SolanaChainId.Mainnet));
106-
107-
Debug.Log(nativeResultData.data);
108-
109-
if (nativeResultData.isSuccess)
110-
{
111-
Debug.Log("SetChainInfoAsync:" + nativeResultData.data);
112-
}
113-
else
114-
{
115-
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
116-
Debug.Log(errorData);
117-
}
118-
}
119-
12086
public async void Mint()
12187
{
12288
// Example for call mint method of a contract

0 commit comments

Comments
 (0)