Răsfoiți Sursa

fractal fixes

Jordan Sexton 3 ani în urmă
părinte
comite
898cb92e54

+ 1 - 1
packages/wallets/fractal/package.json

@@ -40,4 +40,4 @@
         "@solana/web3.js": "^1.61.0",
         "shx": "^0.3.4"
     }
-}
+}

+ 25 - 22
packages/wallets/fractal/src/adapter.ts

@@ -1,18 +1,22 @@
+import type { FractalWalletAdapterImpl as FractalWallet } from '@fractalwagmi/solana-wallet-adapter';
+import type { WalletName } from '@solana/wallet-adapter-base';
 import {
     BaseSignerWalletAdapter,
+    WalletAccountError,
     WalletConfigError,
     WalletConnectionError,
     WalletDisconnectionError,
     WalletLoadError,
     WalletNotConnectedError,
     WalletNotReadyError,
+    WalletPublicKeyError,
     WalletReadyState,
     WalletSignTransactionError,
 } from '@solana/wallet-adapter-base';
-import type { WalletName } from '@solana/wallet-adapter-base';
 import type { Transaction } from '@solana/web3.js';
-import type { PublicKey } from '@solana/web3.js';
-import type { FractalWalletAdapterImpl as FractalWallet } from '@fractalwagmi/solana-wallet-adapter';
+import { PublicKey } from '@solana/web3.js';
+
+export interface FractalWalletAdapterConfig {}
 
 export const FractalWalletName = 'Fractal' as WalletName<'Fractal'>;
 
@@ -21,19 +25,17 @@ export class FractalWalletAdapter extends BaseSignerWalletAdapter {
     url = 'https://developers.fractal.is/wallet-adapters/solana';
     icon =
         'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAwIDEwMDAiPjxwYXRoIGQ9Ik0zNDIuMjQgNzYzLjkzVjI0My44Mkg3MTV2MTEyLjY5SDQ4MXYxMTUuNThoMTgydjExMi42OUg0ODF2MTc5LjE1WiIgc3R5bGU9ImZpbGw6I2RlMzU5YyIvPjwvc3ZnPg==';
-
     readonly supportedTransactionVersions = null;
 
-    private readonly _readyState: WalletReadyState =
-        typeof window === 'undefined' || typeof document === 'undefined'
-            ? WalletReadyState.Unsupported
-            : WalletReadyState.Loadable;
-
     private _connecting: boolean;
     private _wallet: FractalWallet | null;
     private _publicKey: PublicKey | null;
+    private _readyState: WalletReadyState =
+        typeof window === 'undefined' || typeof document === 'undefined'
+            ? WalletReadyState.Unsupported
+            : WalletReadyState.Loadable;
 
-    constructor() {
+    constructor(config: FractalWalletAdapterConfig = {}) {
         super();
         this._connecting = false;
         this._wallet = null;
@@ -41,17 +43,13 @@ export class FractalWalletAdapter extends BaseSignerWalletAdapter {
     }
 
     get publicKey() {
-        return this._wallet?.getPublicKey() ?? null;
+        return this._publicKey;
     }
 
     get connecting() {
         return this._connecting;
     }
 
-    get connected() {
-        return !!this.publicKey;
-    }
-
     get readyState() {
         return this._readyState;
     }
@@ -77,7 +75,8 @@ export class FractalWalletAdapter extends BaseSignerWalletAdapter {
                 throw new WalletConfigError(error?.message, error);
             }
 
-            if (!wallet.getPublicKey()) {
+            const account = wallet.getPublicKey();
+            if (!account) {
                 try {
                     await wallet.connect();
                 } catch (error: any) {
@@ -85,13 +84,18 @@ export class FractalWalletAdapter extends BaseSignerWalletAdapter {
                 }
             }
 
-            this._wallet = wallet;
-            this._publicKey = wallet.getPublicKey();
-            if (!this._publicKey) {
-                throw new WalletConnectionError('Expected a public key');
+            let publicKey: PublicKey;
+            try {
+                // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+                publicKey = new PublicKey(wallet.getPublicKey()!.toBytes());
+            } catch (error: any) {
+                throw new WalletPublicKeyError(error?.message, error);
             }
 
-            this.emit('connect', this._publicKey);
+            this._wallet = wallet;
+            this._publicKey = publicKey;
+
+            this.emit('connect', publicKey);
         } catch (error: any) {
             this.emit('error', error);
             throw error;
@@ -102,7 +106,6 @@ export class FractalWalletAdapter extends BaseSignerWalletAdapter {
 
     async disconnect(): Promise<void> {
         const wallet = this._wallet;
-
         if (wallet) {
             this._wallet = null;
             this._publicKey = null;

+ 45 - 0
pnpm-lock.yaml

@@ -520,6 +520,19 @@ importers:
       '@solana/web3.js': 1.63.1
       shx: 0.3.4
 
+  packages/wallets/fractal:
+    specifiers:
+      '@fractalwagmi/solana-wallet-adapter': ^0.0.1
+      '@solana/wallet-adapter-base': workspace:^
+      '@solana/web3.js': ^1.61.0
+      shx: ^0.3.4
+    dependencies:
+      '@fractalwagmi/solana-wallet-adapter': 0.0.1_5j2akwpmh45vzaq5qdoj3sxh3i
+      '@solana/wallet-adapter-base': link:../../core/base
+    devDependencies:
+      '@solana/web3.js': 1.63.1
+      shx: 0.3.4
+
   packages/wallets/glow:
     specifiers:
       '@solana/wallet-adapter-base': workspace:^
@@ -2705,6 +2718,28 @@ packages:
     transitivePeerDependencies:
       - supports-color
 
+  /@fractalwagmi/popup-connection/1.0.11_biqbaboplfbrettd7655fr4n2y:
+    resolution: {integrity: sha512-miEg+oNKZ/IA7bnBTbYOrH3zTMWiBbzwTl7Ko6hKPRwRnvgtqfpgRvmnl6nwtaZJqkiKUJLkztHYdTrR1P3afQ==}
+    peerDependencies:
+      react: ^16 || ^17 || ^18
+      react-dom: ^16 || ^17 || ^18
+    dependencies:
+      react: 18.2.0
+      react-dom: 18.2.0_react@18.2.0
+    dev: false
+
+  /@fractalwagmi/solana-wallet-adapter/0.0.1_5j2akwpmh45vzaq5qdoj3sxh3i:
+    resolution: {integrity: sha512-7eIvMkL5uRjWOuCm08S2D47CU0HIdnl/HFW5aYzO9cnGCM5wXJ21lbgUtL3Suy6Srga+oUhSMBJsoz4Z2WUWpw==}
+    dependencies:
+      '@fractalwagmi/popup-connection': 1.0.11_biqbaboplfbrettd7655fr4n2y
+      '@solana/wallet-adapter-base': 0.9.18_@solana+web3.js@1.63.1
+      bs58: 5.0.0
+    transitivePeerDependencies:
+      - '@solana/web3.js'
+      - react
+      - react-dom
+    dev: false
+
   /@hapi/bourne/2.1.0:
     resolution: {integrity: sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==}
     dev: false
@@ -4731,6 +4766,16 @@ packages:
     dependencies:
       buffer: 6.0.3
 
+  /@solana/wallet-adapter-base/0.9.18_@solana+web3.js@1.63.1:
+    resolution: {integrity: sha512-5HQFytLmb64j1Nzc6dwddZx+IUePN/PYqVMyf/ok7fN3z8Vw3EIFS8b+RFfBpj4HWbc2kqv5fpnLlaAH7q67pA==}
+    engines: {node: '>=16'}
+    peerDependencies:
+      '@solana/web3.js': ^1.61.0
+    dependencies:
+      '@solana/web3.js': 1.63.1
+      eventemitter3: 4.0.7
+    dev: false
+
   /@solana/web3.js/1.63.1:
     resolution: {integrity: sha512-wgEdGVK5FTS2zENxbcGSvKpGZ0jDS6BUdGu8Gn6ns0CzgJkK83u4ip3THSnBPEQ5i/jrqukg998BwV1H67+qiQ==}
     engines: {node: '>=12.20.0'}

+ 3 - 0
tsconfig.all.json

@@ -67,6 +67,9 @@
         {
             "path": "./packages/wallets/exodus/tsconfig.all.json"
         },
+        {
+            "path": "./packages/wallets/fractal/tsconfig.all.json"
+        },
         {
             "path": "./packages/wallets/glow/tsconfig.all.json"
         },