瀏覽代碼

particle fixes, changeset (#877)

Jordan 1 年之前
父節點
當前提交
7d41f2fe
共有 4 個文件被更改,包括 89 次插入67 次删除
  1. 5 0
      .changeset/popular-pants-cheat.md
  2. 1 0
      packages/wallets/particle/package.json
  3. 19 49
      packages/wallets/particle/src/adapter.ts
  4. 64 18
      pnpm-lock.yaml

+ 5 - 0
.changeset/popular-pants-cheat.md

@@ -0,0 +1,5 @@
+---
+'@solana/wallet-adapter-particle': patch
+---
+
+Update Particle adapter

+ 1 - 0
packages/wallets/particle/package.json

@@ -39,6 +39,7 @@
         "@solana/wallet-adapter-base": "workspace:^"
     },
     "devDependencies": {
+        "@metamask/eth-sig-util": "^7.0.1",
         "@solana/web3.js": "^1.77.3",
         "shx": "^0.3.4"
     }

+ 19 - 49
packages/wallets/particle/src/adapter.ts

@@ -1,4 +1,4 @@
-import type { Config, ParticleNetwork, SolanaWallet } from '@particle-network/solana-wallet';
+import type { ParticleNetwork, SolanaWallet } from '@particle-network/solana-wallet';
 import type { WalletName } from '@solana/wallet-adapter-base';
 import {
     BaseMessageSignerWalletAdapter,
@@ -15,19 +15,10 @@ import {
 } from '@solana/wallet-adapter-base';
 import type { Transaction } from '@solana/web3.js';
 import { PublicKey } from '@solana/web3.js';
-import { LoginOptions } from '@particle-network/auth';
-
-interface NestedConfig {
-    chainId?: number;
-    chainName?: string;
-    projectId: string;
-    clientKey: string;
-    appId: string;
-}
 
 export interface ParticleAdapterConfig {
-    config?: NestedConfig;
-    preferredAuthType?: string;
+    config?: ConstructorParameters<typeof ParticleNetwork>[0];
+    login?: Parameters<SolanaWallet['connect']>[0];
 }
 
 export const ParticleName = 'Particle' as WalletName<'Particle'>;
@@ -46,7 +37,7 @@ export class ParticleAdapter extends BaseMessageSignerWalletAdapter {
     private _readyState: WalletReadyState =
         typeof window === 'undefined' ? WalletReadyState.Unsupported : WalletReadyState.Loadable;
 
-    private _particleNetwork: ParticleNetwork | null = null;
+    private _particle: ParticleNetwork | null = null;
 
     constructor(config: ParticleAdapterConfig = {}) {
         super();
@@ -54,35 +45,21 @@ export class ParticleAdapter extends BaseMessageSignerWalletAdapter {
         this._publicKey = null;
         this._wallet = null;
 
-        const defaultNestedConfig: NestedConfig = {
-            projectId: '',
-            clientKey: '',
-            appId: '',
-        };
-
-        const nestedConfig: NestedConfig = {
-            ...defaultNestedConfig,
-            ...config.config,
-        };
-
-        const chainId = nestedConfig.chainId !== undefined ? nestedConfig.chainId : 101;
-        const chainName = nestedConfig.chainName !== undefined ? nestedConfig.chainName : 'solana';
-
         this._config = {
-            ...config,
             config: {
-                ...nestedConfig,
-                chainId,
-                chainName,
-                projectId: nestedConfig.projectId,
-                clientKey: nestedConfig.clientKey,
-                appId: nestedConfig.appId,
+                projectId: '',
+                clientKey: '',
+                appId: '',
+                ...config.config,
+                chainId: config.config?.chainId ?? 101,
+                chainName: config.config?.chainName ?? 'solana',
             },
+            login: config.login,
         };
     }
 
-    public get particle(): ParticleNetwork | null {
-        return this._particleNetwork;
+    get particle(): ParticleNetwork | null {
+        return this._particle;
     }
 
     get publicKey() {
@@ -106,7 +83,6 @@ export class ParticleAdapter extends BaseMessageSignerWalletAdapter {
 
             let ParticleClass: typeof ParticleNetwork;
             let WalletClass: typeof SolanaWallet;
-
             try {
                 ({ ParticleNetwork: ParticleClass, SolanaWallet: WalletClass } = await import(
                     '@particle-network/solana-wallet'
@@ -115,17 +91,11 @@ export class ParticleAdapter extends BaseMessageSignerWalletAdapter {
                 throw new WalletLoadError(error?.message, error);
             }
 
-            let particleNetwork: ParticleNetwork;
-
-            const authOptions: LoginOptions = {};
-            if (this._config.preferredAuthType) {
-                authOptions.preferredAuthType = this._config.preferredAuthType as LoginOptions['preferredAuthType'];
-            }
-
+            let particle: ParticleNetwork;
             try {
-                particleNetwork = new ParticleClass(this._config?.config as Config);
-                if (!particleNetwork.auth.isLogin()) {
-                    await particleNetwork.auth.login(authOptions);
+                particle = new ParticleClass(this._config.config);
+                if (!particle.auth.isLogin()) {
+                    await particle.auth.login(this._config.login);
                 }
             } catch (error: any) {
                 throw new WalletConfigError(error?.message, error);
@@ -133,7 +103,7 @@ export class ParticleAdapter extends BaseMessageSignerWalletAdapter {
 
             let wallet: SolanaWallet;
             try {
-                wallet = new WalletClass(particleNetwork.auth);
+                wallet = new WalletClass(particle.auth);
             } catch (error: any) {
                 throw new WalletConfigError(error?.message, error);
             }
@@ -148,8 +118,8 @@ export class ParticleAdapter extends BaseMessageSignerWalletAdapter {
                 throw new WalletPublicKeyError(error?.message, error);
             }
 
+            this._particle = particle;
             this._wallet = wallet;
-            this._particleNetwork = particleNetwork;
             this._publicKey = publicKey;
 
             this.emit('connect', publicKey);

+ 64 - 18
pnpm-lock.yaml

@@ -896,6 +896,9 @@ importers:
         specifier: workspace:^
         version: link:../../core/base
     devDependencies:
+      '@metamask/eth-sig-util':
+        specifier: ^7.0.1
+        version: 7.0.1
       '@solana/web3.js':
         specifier: ^1.77.3
         version: 1.78.0
@@ -3376,13 +3379,11 @@ packages:
     dependencies:
       '@ethereumjs/util': 8.1.0
       crc-32: 1.2.2
-    dev: false
 
   /@ethereumjs/rlp@4.0.1:
     resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==}
     engines: {node: '>=14'}
     hasBin: true
-    dev: false
 
   /@ethereumjs/tx@4.2.0:
     resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==}
@@ -3392,7 +3393,6 @@ packages:
       '@ethereumjs/rlp': 4.0.1
       '@ethereumjs/util': 8.1.0
       ethereum-cryptography: 2.1.2
-    dev: false
 
   /@ethereumjs/util@8.1.0:
     resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==}
@@ -3401,7 +3401,6 @@ packages:
       '@ethereumjs/rlp': 4.0.1
       ethereum-cryptography: 2.1.2
       micro-ftch: 0.3.1
-    dev: false
 
   /@fivebinaries/coin-selection@2.2.0:
     resolution: {integrity: sha512-1j0GGlfXla6Ws51gmemyLBVtsROQBGhTMExSYmpRmLHGLpNuOsEA4O7P19yzjW209gSswcD9+T7zEYCNbp3MRg==}
@@ -4143,6 +4142,30 @@ packages:
       read-yaml-file: 1.1.0
     dev: true
 
+  /@metamask/abi-utils@2.0.2:
+    resolution: {integrity: sha512-B/A1dY/w4F/t6cDHUscklO6ovb/ztFsrsTXFd8QlqSByk/vyy+QbPE3VVpmmyI/7RX+PA1AJcvBdzCIz+r9dVQ==}
+    engines: {node: '>=16.0.0'}
+    dependencies:
+      '@metamask/utils': 8.2.1
+      superstruct: 1.0.3
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /@metamask/eth-sig-util@7.0.1:
+    resolution: {integrity: sha512-59GSrMyFH2fPfu7nKeIQdZ150zxXNNhAQIUaFRUW+MGtVA4w/ONbiQobcRBLi+jQProfIyss51G8pfLPcQ0ylg==}
+    engines: {node: ^16.20 || ^18.16 || >=20}
+    dependencies:
+      '@ethereumjs/util': 8.1.0
+      '@metamask/abi-utils': 2.0.2
+      '@metamask/utils': 8.2.1
+      ethereum-cryptography: 2.1.2
+      tweetnacl: 1.0.3
+      tweetnacl-util: 0.15.1
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
   /@metamask/rpc-errors@5.1.1:
     resolution: {integrity: sha512-JjZnDi2y2CfvbohhBl+FOQRzmFlJpybcQlIk37zEX8B96eVSPbH/T8S0p7cSF8IE33IWx6JkD8Ycsd+2TXFxCw==}
     engines: {node: '>=16.0.0'}
@@ -4166,6 +4189,22 @@ packages:
       - supports-color
     dev: false
 
+  /@metamask/utils@8.2.1:
+    resolution: {integrity: sha512-dlnpow8r0YHDDL1xKCEwUoTGOAo9icdv+gaJG0EbgDnkD/BDqW2eH1XMtm9i7rPaiHWo/aLtcrh9WBhkCq/viw==}
+    engines: {node: '>=16.0.0'}
+    dependencies:
+      '@ethereumjs/tx': 4.2.0
+      '@noble/hashes': 1.3.2
+      '@scure/base': 1.1.5
+      '@types/debug': 4.1.8
+      debug: 4.3.4
+      pony-cause: 2.1.10
+      semver: 7.5.4
+      superstruct: 1.0.3
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
   /@mischnic/json-sourcemap@0.1.0:
     resolution: {integrity: sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==}
     engines: {node: '>=12.0.0'}
@@ -4562,7 +4601,6 @@ packages:
   /@noble/hashes@1.3.2:
     resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==}
     engines: {node: '>= 16'}
-    dev: false
 
   /@nodelib/fs.scandir@2.1.5:
     resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
@@ -5814,22 +5852,23 @@ packages:
 
   /@scure/base@1.1.1:
     resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==}
-    dev: false
+
+  /@scure/base@1.1.5:
+    resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==}
+    dev: true
 
   /@scure/bip32@1.3.1:
     resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==}
     dependencies:
       '@noble/curves': 1.1.0
-      '@noble/hashes': 1.3.1
+      '@noble/hashes': 1.3.2
       '@scure/base': 1.1.1
-    dev: false
 
   /@scure/bip39@1.2.1:
     resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==}
     dependencies:
-      '@noble/hashes': 1.3.1
+      '@noble/hashes': 1.3.2
       '@scure/base': 1.1.1
-    dev: false
 
   /@sideway/address@4.1.4:
     resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==}
@@ -6015,7 +6054,7 @@ packages:
     dependencies:
       '@babel/runtime': 7.23.5
       '@noble/curves': 1.2.0
-      '@noble/hashes': 1.3.1
+      '@noble/hashes': 1.3.2
       '@solana/buffer-layout': 4.0.1
       agentkeepalive: 4.3.0
       bigint-buffer: 1.1.5
@@ -6932,7 +6971,6 @@ packages:
     resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==}
     dependencies:
       '@types/ms': 0.7.31
-    dev: false
 
   /@types/eslint-scope@3.7.4:
     resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==}
@@ -7054,7 +7092,6 @@ packages:
 
   /@types/ms@0.7.31:
     resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
-    dev: false
 
   /@types/node-fetch@2.6.4:
     resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==}
@@ -8793,7 +8830,7 @@ packages:
   /bs58check@3.0.1:
     resolution: {integrity: sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==}
     dependencies:
-      '@noble/hashes': 1.3.1
+      '@noble/hashes': 1.3.2
       bs58: 5.0.0
     dev: false
 
@@ -9346,7 +9383,6 @@ packages:
     resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
     engines: {node: '>=0.8'}
     hasBin: true
-    dev: false
 
   /crc@3.8.0:
     resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==}
@@ -10783,7 +10819,6 @@ packages:
       '@noble/hashes': 1.3.1
       '@scure/bip32': 1.3.1
       '@scure/bip39': 1.2.1
-    dev: false
 
   /ev-emitter@2.1.2:
     resolution: {integrity: sha512-jQ5Ql18hdCQ4qS+RCrbLfz1n+Pags27q5TwMKvZyhp5hh2UULUYZUy1keqj6k6SYsdqIYjnmz7xyyEY0V67B8Q==}
@@ -14351,7 +14386,6 @@ packages:
 
   /micro-ftch@0.3.1:
     resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==}
-    dev: false
 
   /micromatch@4.0.5:
     resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
@@ -15258,6 +15292,11 @@ packages:
     hasBin: true
     dev: true
 
+  /pony-cause@2.1.10:
+    resolution: {integrity: sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==}
+    engines: {node: '>=12.0.0'}
+    dev: true
+
   /postcss-attribute-case-insensitive@5.0.2(postcss@8.4.26):
     resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==}
     engines: {node: ^12 || ^14 || >=16}
@@ -18462,7 +18501,6 @@ packages:
   /superstruct@1.0.3:
     resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==}
     engines: {node: '>=14.0.0'}
-    dev: false
 
   /supports-color@5.5.0:
     resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
@@ -18927,6 +18965,14 @@ packages:
       turbo-windows-arm64: 1.10.9
     dev: true
 
+  /tweetnacl-util@0.15.1:
+    resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==}
+    dev: true
+
+  /tweetnacl@1.0.3:
+    resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==}
+    dev: true
+
   /type-check@0.4.0:
     resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
     engines: {node: '>= 0.8.0'}