@getpara/evm-wallet-connectors 2.0.0-alpha.21 → 2.0.0-alpha.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { createParaWagmiConfig } from './providers/createParaWagmiConfig.js';
2
2
  export { EvmExternalWalletContext } from './providers/EvmExternalWalletContext.js';
3
- export { type EvmExternalWalletContextType, defaultEvmExternalWallet } from './providers/EvmExternalWalletContext.js';
3
+ export { type EvmExternalWalletContextType } from './providers/EvmExternalWalletContext.js';
4
4
  export { ParaEvmProvider } from './providers/ParaEvmContext.js';
5
5
  export type { ParaEvmProviderProps, ParaEvmProviderConfig, ParaWagmiProviderProps } from './providers/ParaEvmContext.js';
6
6
  export { getWagmiConfig } from './stores/wagmiConfigStore.js';
package/dist/index.js CHANGED
@@ -2,7 +2,6 @@
2
2
  import "./chunk-MMUBH76A.js";
3
3
  import { createParaWagmiConfig } from "./providers/createParaWagmiConfig.js";
4
4
  import { EvmExternalWalletContext } from "./providers/EvmExternalWalletContext.js";
5
- import { defaultEvmExternalWallet } from "./providers/EvmExternalWalletContext.js";
6
5
  import { ParaEvmProvider } from "./providers/ParaEvmContext.js";
7
6
  import { getWagmiConfig } from "./stores/wagmiConfigStore.js";
8
7
  export * from "./wallets/connectors/index.js";
@@ -10,6 +9,5 @@ export {
10
9
  EvmExternalWalletContext,
11
10
  ParaEvmProvider,
12
11
  createParaWagmiConfig,
13
- defaultEvmExternalWallet,
14
12
  getWagmiConfig
15
13
  };
@@ -1,22 +1,5 @@
1
1
  import { PropsWithChildren } from 'react';
2
- import type { BalanceManagement, ChainManagement, ConnectParaEmbedded, ExternalWalletContextType, ExternalWalletProviderConfigBase } from '@getpara/react-common';
3
- import { ExternalWalletInfo } from '@getpara/web-sdk';
4
- export declare const defaultEvmExternalWallet: {
5
- wallets: any[];
6
- chains: any[];
7
- chainId: any;
8
- username: any;
9
- avatar: any;
10
- balance: any;
11
- disconnect: () => Promise<void>;
12
- switchChain: () => Promise<void>;
13
- connectParaEmbedded: () => Promise<{}>;
14
- signMessage: () => Promise<{}>;
15
- signVerificationMessage: () => Promise<{}>;
16
- getWalletBalance: () => Promise<any>;
17
- requestInfo: () => Promise<ExternalWalletInfo>;
18
- disconnectBase: () => Promise<void>;
19
- };
2
+ import { type BalanceManagement, type ChainManagement, type ConnectParaEmbedded, type ExternalWalletContextType, type ExternalWalletProviderConfigBase } from '@getpara/react-common';
20
3
  export type EvmExternalWalletContextType = ExternalWalletContextType & ChainManagement<number> & BalanceManagement & ConnectParaEmbedded & {
21
4
  username?: string;
22
5
  avatar?: string;
@@ -22,24 +22,11 @@ import { isEIP6963Connector } from "../utils/isEIP6963Connector.js";
22
22
  import { getWalletConnectUri } from "../utils/getWalletConnectUri.js";
23
23
  import { normalize } from "viem/ens";
24
24
  import { useExternalWalletStore } from "../stores/useStore.js";
25
+ import {
26
+ defaultEvmExternalWallet
27
+ } from "@getpara/react-common";
25
28
  import { isMobile } from "@getpara/web-sdk";
26
29
  import { etherUnits, formatUnits } from "viem";
27
- const defaultEvmExternalWallet = {
28
- wallets: [],
29
- chains: [],
30
- chainId: void 0,
31
- username: void 0,
32
- avatar: void 0,
33
- balance: void 0,
34
- disconnect: () => Promise.resolve(),
35
- switchChain: () => Promise.resolve(),
36
- connectParaEmbedded: () => Promise.resolve({}),
37
- signMessage: () => Promise.resolve({}),
38
- signVerificationMessage: () => Promise.resolve({}),
39
- getWalletBalance: () => Promise.resolve(void 0),
40
- requestInfo: () => Promise.resolve({}),
41
- disconnectBase: () => Promise.resolve()
42
- };
43
30
  const EvmExternalWalletContext = createContext(defaultEvmExternalWallet);
44
31
  function EvmExternalWalletProvider({
45
32
  children,
@@ -126,13 +113,13 @@ function EvmExternalWalletProvider({
126
113
  if (!isConnecting && !isReconnecting && !isLocalConnecting && !!wagmiAddress && !storedExternalWallet && (connectedConnector == null ? void 0 : connectedConnector.id) !== "para" && !isLinkingAccount.current) {
127
114
  reset();
128
115
  }
129
- }, [isConnecting, isReconnecting, isLocalConnecting, wagmiAddress, connectedConnector]);
116
+ }, [isConnected, isLocalConnecting, wagmiAddress, connectedConnector]);
130
117
  useEffect(() => {
131
118
  const storedExternalWallet = Object.values(para.externalWallets || {})[0];
132
- if (!isLocalConnecting && !isConnecting && !isReconnecting && (storedExternalWallet == null ? void 0 : storedExternalWallet.type) === "EVM" && (storedExternalWallet == null ? void 0 : storedExternalWallet.address) !== wagmiAddress && (connectedConnector == null ? void 0 : connectedConnector.id) !== "para" && !isLinkingAccount.current) {
119
+ if (!isLocalConnecting && isConnected && (storedExternalWallet == null ? void 0 : storedExternalWallet.type) === "EVM" && (storedExternalWallet == null ? void 0 : storedExternalWallet.address) !== wagmiAddress && (connectedConnector == null ? void 0 : connectedConnector.id) !== "para" && !isLinkingAccount.current) {
133
120
  switchWallet(wagmiAddress);
134
121
  }
135
- }, [isLocalConnecting, wagmiAddress, isReconnecting, isConnecting]);
122
+ }, [isLocalConnecting, wagmiAddress, isConnected]);
136
123
  useEffect(() => {
137
124
  if (!isLocalConnecting && !isConnecting && !isReconnecting && connectedWallet && connectedConnector && connectedWallet.type === "EVM" && connectedConnector.name !== connectedWallet.name) {
138
125
  switchAccount(connectedWallet.isExternal ? connectedWallet.name : "Para");
@@ -297,6 +284,7 @@ function EvmExternalWalletProvider({
297
284
  break;
298
285
  }
299
286
  default: {
287
+ console.error("Wagmi connection error:", e.message);
300
288
  error = "An unknown error occurred";
301
289
  break;
302
290
  }
@@ -449,6 +437,5 @@ function EvmExternalWalletProvider({
449
437
  }
450
438
  export {
451
439
  EvmExternalWalletContext,
452
- EvmExternalWalletProvider,
453
- defaultEvmExternalWallet
440
+ EvmExternalWalletProvider
454
441
  };
@@ -5,7 +5,7 @@ import {
5
5
  __spreadValues
6
6
  } from "../chunk-MMUBH76A.js";
7
7
  import { jsx } from "react/jsx-runtime";
8
- import { useMemo } from "react";
8
+ import { useMemo, useRef } from "react";
9
9
  import { createConfig, WagmiProvider } from "wagmi";
10
10
  import { connectorsForWallets } from "../wallets/connectorsForWallets.js";
11
11
  import { http } from "viem";
@@ -28,6 +28,7 @@ function ParaEvmProvider({
28
28
  config: _config,
29
29
  wagmiProviderProps
30
30
  }) {
31
+ const prevWallets = useRef(null);
31
32
  const para = internalConfig.para;
32
33
  const _a = _config, {
33
34
  projectId,
@@ -60,8 +61,11 @@ function ParaEvmProvider({
60
61
  });
61
62
  }, [para]);
62
63
  const config = useMemo(() => {
64
+ if (!prevWallets.current) {
65
+ prevWallets.current = wallets;
66
+ }
63
67
  const existing = getWagmiConfig();
64
- if (existing) return existing;
68
+ if (existing && prevWallets.current === wallets) return existing;
65
69
  const wcMetadata = computeWalletConnectMetaData({ appName, appDescription, appUrl, appIcon });
66
70
  const walletFactories = resolveWalletList(wallets);
67
71
  const baseConnectors = connectorsForWallets(walletFactories, {
@@ -73,12 +77,15 @@ function ParaEvmProvider({
73
77
  walletConnectParameters: { metadata: wcMetadata }
74
78
  });
75
79
  const allConnectors = [...baseConnectors, paraConnectorInstance];
76
- const createdConfig = createConfig(__spreadProps(__spreadValues({}, wagmiConfigParams), {
80
+ const createdConfig = createConfig(__spreadProps(__spreadValues({
81
+ ssr: true
82
+ }, wagmiConfigParams), {
77
83
  chains,
78
84
  transports: transports || createDefaultTransports(chains),
79
85
  connectors: allConnectors
80
86
  }));
81
87
  setWagmiConfig(createdConfig);
88
+ prevWallets.current = wallets;
82
89
  return createdConfig;
83
90
  }, [wallets, paraConnectorInstance]);
84
91
  return /* @__PURE__ */ jsx(WagmiProvider, __spreadProps(__spreadValues({ config }, wagmiProviderProps), { children: /* @__PURE__ */ jsx(EvmExternalWalletProvider, __spreadProps(__spreadValues({}, internalConfig), { children })) }));
@@ -49,7 +49,9 @@ function createParaWagmiConfig(para, cfg) {
49
49
  appName,
50
50
  options: paraConnectorOptions != null ? paraConnectorOptions : {}
51
51
  });
52
- const created = createConfig(__spreadProps(__spreadValues({}, wagmiParams), {
52
+ const created = createConfig(__spreadProps(__spreadValues({
53
+ ssr: true
54
+ }, wagmiParams), {
53
55
  chains,
54
56
  transports,
55
57
  connectors: [...baseConnectors, paraConn]
@@ -8,5 +8,6 @@ import { safeWallet } from './safe/safe.js';
8
8
  import { okxWallet } from './okx/okx.js';
9
9
  import { backpackWallet } from './backpack/backpack.js';
10
10
  import { hahaWallet } from './haha/haha.js';
11
- export { metaMaskWallet, rainbowWallet, walletConnectWallet, coinbaseWallet, zerionWallet, rabbyWallet, safeWallet, okxWallet, backpackWallet, hahaWallet, };
11
+ import { phantomWallet } from './phantom/phantom.js';
12
+ export { metaMaskWallet, rainbowWallet, walletConnectWallet, coinbaseWallet, zerionWallet, rabbyWallet, safeWallet, okxWallet, backpackWallet, hahaWallet, phantomWallet, };
12
13
  export declare const allWallets: ((({ appName, appIcon }: import("./coinbase/coinbase.js").CoinbaseWalletOptions) => import("../../types/Wallet.js").Wallet) | (({ projectId, options }: import("./walletConnect/walletConnect.js").WalletConnectWalletOptions) => import("../../types/Wallet.js").Wallet) | (({ projectId, walletConnectParameters }: import("./metaMask/metaMask.js").MetaMaskWalletOptions) => import("../../types/Wallet.js").Wallet))[];
@@ -10,6 +10,7 @@ import { safeWallet } from "./safe/safe.js";
10
10
  import { okxWallet } from "./okx/okx.js";
11
11
  import { backpackWallet } from "./backpack/backpack.js";
12
12
  import { hahaWallet } from "./haha/haha.js";
13
+ import { phantomWallet } from "./phantom/phantom.js";
13
14
  const allWallets = [
14
15
  metaMaskWallet,
15
16
  rainbowWallet,
@@ -20,7 +21,8 @@ const allWallets = [
20
21
  safeWallet,
21
22
  okxWallet,
22
23
  backpackWallet,
23
- hahaWallet
24
+ hahaWallet,
25
+ phantomWallet
24
26
  ];
25
27
  export {
26
28
  allWallets,
@@ -29,6 +31,7 @@ export {
29
31
  hahaWallet,
30
32
  metaMaskWallet,
31
33
  okxWallet,
34
+ phantomWallet,
32
35
  rabbyWallet,
33
36
  rainbowWallet,
34
37
  safeWallet,
@@ -0,0 +1,3 @@
1
+ import { DefaultWalletOptions, Wallet } from '../../../types/Wallet.js';
2
+ export type PhantomWalletOptions = DefaultWalletOptions;
3
+ export declare const phantomWallet: ({ projectId, walletConnectParameters }: PhantomWalletOptions) => Wallet;
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ import "../../../chunk-MMUBH76A.js";
3
+ import { getInjectedConnector, hasInjectedProvider } from "../../../utils/getInjectedConnector.js";
4
+ import { icon } from "./phantomIcon.js";
5
+ import { getWalletConnectConnector } from "../../../utils/getWalletConnectConnector.js";
6
+ const phantomWallet = ({ projectId, walletConnectParameters }) => {
7
+ const isPhantomInjected = hasInjectedProvider({ namespace: "phantom.ethereum" });
8
+ const shouldUseWalletConnect = !isPhantomInjected;
9
+ const getUri = (uri) => {
10
+ return uri;
11
+ };
12
+ return {
13
+ id: "phantom",
14
+ internalId: "PHANTOM",
15
+ name: "Phantom",
16
+ rdns: "app.phantom",
17
+ iconUrl: icon,
18
+ installed: isPhantomInjected,
19
+ isExtension: true,
20
+ isMobile: true,
21
+ getUri,
22
+ downloadUrl: "https://phantom.app/download",
23
+ createConnector: shouldUseWalletConnect ? getWalletConnectConnector({
24
+ projectId,
25
+ walletConnectParameters
26
+ }) : getInjectedConnector({ namespace: "phantom.ethereum" })
27
+ };
28
+ };
29
+ export {
30
+ phantomWallet
31
+ };
@@ -0,0 +1 @@
1
+ export declare const icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMjU5Nl8xMzg1ODApIj4KPHJlY3QgeT0iLTAuMDAwOTc2NTYyIiB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiBmaWxsPSIjQUI5RkYyIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNTIyLjIxOCA3NjQuODEzQzQ3NS4xMDEgODM3LjAxMSAzOTYuMTQ3IDkyOC4zNzcgMjkxLjA4OSA5MjguMzc3QzI0MS40MjUgOTI4LjM3NyAxOTMuNjcxIDkwNy45MzIgMTkzLjY3MSA4MTkuMTIxQzE5My42NzEgNTkyLjk0MiA1MDIuNDc5IDI0Mi44MTIgNzg5LjAwMyAyNDIuODEyQzk1Mi4wMDMgMjQyLjgxMiAxMDE2Ljk1IDM1NS45MDEgMTAxNi45NSA0ODQuMzI1QzEwMTYuOTUgNjQ5LjE2NyA5MDkuOTc5IDgzNy42NSA4MDMuNjQ3IDgzNy42NUM3NjkuOTAxIDgzNy42NSA3NTMuMzQ2IDgxOS4xMjEgNzUzLjM0NiA3ODkuNzMxQzc1My4zNDYgNzgyLjA2NCA3NTQuNjIgNzczLjc1OCA3NTcuMTY3IDc2NC44MTNDNzIwLjg3NCA4MjYuNzg4IDY1MC44MzUgODg0LjI5MiA1ODUuMjUzIDg4NC4yOTJDNTM3LjQ5OSA4ODQuMjkyIDUxMy4zMDQgODU0LjI2MiA1MTMuMzA0IDgxMi4wOTNDNTEzLjMwNCA3OTYuNzU5IDUxNi40ODcgNzgwLjc4NiA1MjIuMjE4IDc2NC44MTNaTTc2OS4wMzUgNDc5Ljg3MUM3NjkuMDM1IDUxNy4yOTMgNzQ2Ljk1NiA1MzYuMDAzIDcyMi4yNTggNTM2LjAwM0M2OTcuMTg1IDUzNi4wMDMgNjc1LjQ4MSA1MTcuMjkzIDY3NS40ODEgNDc5Ljg3MUM2NzUuNDgxIDQ0Mi40NDkgNjk3LjE4NSA0MjMuNzM4IDcyMi4yNTggNDIzLjczOEM3NDYuOTU2IDQyMy43MzggNzY5LjAzNSA0NDIuNDQ5IDc2OS4wMzUgNDc5Ljg3MVpNOTA5LjM2NyA0NzkuODcyQzkwOS4zNjcgNTE3LjI5NCA4ODcuMjg4IDUzNi4wMDUgODYyLjU5IDUzNi4wMDVDODM3LjUxNyA1MzYuMDA1IDgxNS44MTMgNTE3LjI5NCA4MTUuODEzIDQ3OS44NzJDODE1LjgxMyA0NDIuNDUgODM3LjUxNyA0MjMuNzQgODYyLjU5IDQyMy43NEM4ODcuMjg4IDQyMy43NCA5MDkuMzY3IDQ0Mi40NSA5MDkuMzY3IDQ3OS44NzJaIiBmaWxsPSIjRkZGREY4Ii8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMjU5Nl8xMzg1ODAiPgo8cmVjdCB5PSItMC4wMDA5NzY1NjIiIHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjEyMDAiIHJ4PSI2MDAiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==";
@@ -0,0 +1,6 @@
1
+ "use client";
2
+ import "../../../chunk-MMUBH76A.js";
3
+ const icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMjU5Nl8xMzg1ODApIj4KPHJlY3QgeT0iLTAuMDAwOTc2NTYyIiB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiBmaWxsPSIjQUI5RkYyIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNTIyLjIxOCA3NjQuODEzQzQ3NS4xMDEgODM3LjAxMSAzOTYuMTQ3IDkyOC4zNzcgMjkxLjA4OSA5MjguMzc3QzI0MS40MjUgOTI4LjM3NyAxOTMuNjcxIDkwNy45MzIgMTkzLjY3MSA4MTkuMTIxQzE5My42NzEgNTkyLjk0MiA1MDIuNDc5IDI0Mi44MTIgNzg5LjAwMyAyNDIuODEyQzk1Mi4wMDMgMjQyLjgxMiAxMDE2Ljk1IDM1NS45MDEgMTAxNi45NSA0ODQuMzI1QzEwMTYuOTUgNjQ5LjE2NyA5MDkuOTc5IDgzNy42NSA4MDMuNjQ3IDgzNy42NUM3NjkuOTAxIDgzNy42NSA3NTMuMzQ2IDgxOS4xMjEgNzUzLjM0NiA3ODkuNzMxQzc1My4zNDYgNzgyLjA2NCA3NTQuNjIgNzczLjc1OCA3NTcuMTY3IDc2NC44MTNDNzIwLjg3NCA4MjYuNzg4IDY1MC44MzUgODg0LjI5MiA1ODUuMjUzIDg4NC4yOTJDNTM3LjQ5OSA4ODQuMjkyIDUxMy4zMDQgODU0LjI2MiA1MTMuMzA0IDgxMi4wOTNDNTEzLjMwNCA3OTYuNzU5IDUxNi40ODcgNzgwLjc4NiA1MjIuMjE4IDc2NC44MTNaTTc2OS4wMzUgNDc5Ljg3MUM3NjkuMDM1IDUxNy4yOTMgNzQ2Ljk1NiA1MzYuMDAzIDcyMi4yNTggNTM2LjAwM0M2OTcuMTg1IDUzNi4wMDMgNjc1LjQ4MSA1MTcuMjkzIDY3NS40ODEgNDc5Ljg3MUM2NzUuNDgxIDQ0Mi40NDkgNjk3LjE4NSA0MjMuNzM4IDcyMi4yNTggNDIzLjczOEM3NDYuOTU2IDQyMy43MzggNzY5LjAzNSA0NDIuNDQ5IDc2OS4wMzUgNDc5Ljg3MVpNOTA5LjM2NyA0NzkuODcyQzkwOS4zNjcgNTE3LjI5NCA4ODcuMjg4IDUzNi4wMDUgODYyLjU5IDUzNi4wMDVDODM3LjUxNyA1MzYuMDA1IDgxNS44MTMgNTE3LjI5NCA4MTUuODEzIDQ3OS44NzJDODE1LjgxMyA0NDIuNDUgODM3LjUxNyA0MjMuNzQgODYyLjU5IDQyMy43NEM4ODcuMjg4IDQyMy43NCA5MDkuMzY3IDQ0Mi40NSA5MDkuMzY3IDQ3OS44NzJaIiBmaWxsPSIjRkZGREY4Ii8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMjU5Nl8xMzg1ODAiPgo8cmVjdCB5PSItMC4wMDA5NzY1NjIiIHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjEyMDAiIHJ4PSI2MDAiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==";
4
+ export {
5
+ icon
6
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getpara/evm-wallet-connectors",
3
- "version": "2.0.0-alpha.21",
3
+ "version": "2.0.0-alpha.23",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,8 +10,8 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@coinbase/wallet-sdk": "4.3.0",
13
- "@getpara/wagmi-v2-connector": "2.0.0-alpha.21",
14
- "@getpara/web-sdk": "2.0.0-alpha.21",
13
+ "@getpara/wagmi-v2-connector": "2.0.0-alpha.23",
14
+ "@getpara/web-sdk": "2.0.0-alpha.23",
15
15
  "viem": "^2.24.2",
16
16
  "wagmi": "^2.14.16",
17
17
  "zustand": "^4.5.2",
@@ -23,7 +23,7 @@
23
23
  "test": "vitest run --coverage"
24
24
  },
25
25
  "devDependencies": {
26
- "@getpara/react-common": "2.0.0-alpha.21",
26
+ "@getpara/react-common": "2.0.0-alpha.23",
27
27
  "@tanstack/react-query": ">=5.0.0",
28
28
  "@types/react": "^18.0.31",
29
29
  "@types/react-dom": "^18.2.7",
@@ -39,5 +39,5 @@
39
39
  "dist",
40
40
  "package.json"
41
41
  ],
42
- "gitHead": "03daa3537312bc52e0640225c8abdbf8047c15da"
42
+ "gitHead": "e7c7e95f79bcfca4d57a80f4dd721dc5ecaff24d"
43
43
  }