@getpara/solana-wallet-connectors 2.28.0 → 2.29.0

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.
@@ -42,7 +42,10 @@ import { jsx } from "react/jsx-runtime";
42
42
  import { createContext, useEffect, useMemo, useRef, useState } from "react";
43
43
  import { useWallet } from "@solana/wallet-adapter-react";
44
44
  import { isIosAndRedirectable, WalletReadyState } from "@solana/wallet-adapter-base";
45
- import { isAndroid } from "@getpara/web-sdk";
45
+ import {
46
+ isAndroid,
47
+ isAndroidChrome
48
+ } from "@getpara/web-sdk";
46
49
  import {
47
50
  defaultSolanaExternalWallet
48
51
  } from "@getpara/react-common";
@@ -313,7 +316,7 @@ function SolanaExternalWalletProvider({
313
316
  throw e;
314
317
  }
315
318
  });
316
- const connectCallback = (adapter) => {
319
+ const connectCallback = (adapter, walletName) => {
317
320
  return () => __async(this, null, function* () {
318
321
  var _a, _b, _c, _d;
319
322
  let address;
@@ -322,7 +325,7 @@ function SolanaExternalWalletProvider({
322
325
  } catch (e) {
323
326
  throw e;
324
327
  }
325
- const providerName = adapter.name;
328
+ const providerName = walletName != null ? walletName : adapter.name;
326
329
  const providerId = (_b = (_a = getWallet(providerName != null ? providerName : "")) == null ? void 0 : _a.id) != null ? _b : "";
327
330
  solanaAddressRef.current = address;
328
331
  return {
@@ -340,13 +343,15 @@ function SolanaExternalWalletProvider({
340
343
  };
341
344
  });
342
345
  };
343
- const connect = (adapter) => __async(this, null, function* () {
346
+ const connect = (adapter, walletName) => __async(this, null, function* () {
344
347
  var _a;
345
348
  if (isIosAndRedirectable() && !isInSolanaWalletDappBrowser()) {
346
349
  return;
347
350
  }
348
351
  if (isAndroid() && (adapter == null ? void 0 : adapter.name) === "Mobile Wallet Adapter") {
349
- return;
352
+ if (!isAndroidChrome()) return;
353
+ const tappedWallet = getWallet(walletName != null ? walletName : "");
354
+ if (!(tappedWallet == null ? void 0 : tappedWallet.mwaSupported)) return;
350
355
  }
351
356
  if (adapter && (wallet == null ? void 0 : wallet.adapter) && wallet.adapter.name !== adapter.name) {
352
357
  yield disconnect();
@@ -357,7 +362,7 @@ function SolanaExternalWalletProvider({
357
362
  let error;
358
363
  let authState;
359
364
  try {
360
- authState = yield para.connectExternalWallet({ connect: connectCallback(adapter) });
365
+ authState = yield para.connectExternalWallet({ connect: connectCallback(adapter, walletName) });
361
366
  address = (_a = authState.externalWallet) == null ? void 0 : _a.address;
362
367
  } catch (err) {
363
368
  switch (err.message) {
@@ -430,23 +435,29 @@ function SolanaExternalWalletProvider({
430
435
  const createWallet = (walletFn) => {
431
436
  const metaData = walletFn();
432
437
  const adapter = getAdapter(metaData.name);
438
+ const isMwaOnAndroidChrome = !!metaData.mwaSupported && isAndroidChrome();
433
439
  return __spreadProps(__spreadValues({
434
- connect: () => connect(adapter),
435
- connectMobile: () => connect(adapter),
440
+ connect: () => connect(adapter, metaData.name),
441
+ connectMobile: () => connect(adapter, metaData.name),
436
442
  type: "SOLANA",
437
- installed: adapter && ((adapter == null ? void 0 : adapter.readyState) === WalletReadyState.Installed || (adapter == null ? void 0 : adapter.readyState) === WalletReadyState.Loadable)
443
+ installed: isMwaOnAndroidChrome || adapter && ((adapter == null ? void 0 : adapter.readyState) === WalletReadyState.Installed || (adapter == null ? void 0 : adapter.readyState) === WalletReadyState.Loadable)
438
444
  }, metaData), {
439
445
  // Using name here since that's the only common id across the networks
440
446
  id: metaData.name
441
447
  });
442
448
  };
443
- const [wallets, setWallets] = useState(() => walletFns.map(createWallet));
449
+ const [wallets, setWallets] = useState(() => {
450
+ const created = walletFns.map(createWallet);
451
+ if (isAndroidChrome()) return created;
452
+ return created.filter((w) => w.internalId !== "SEED_VAULT_WALLET");
453
+ });
444
454
  useEffect(() => {
445
455
  setWallets(
446
456
  (prev) => prev.map((wallet2) => {
447
457
  var _a;
448
458
  const adapter = getAdapter((_a = wallet2.name) != null ? _a : "");
449
- const installed = !!adapter && (adapter.readyState === WalletReadyState.Installed || adapter.readyState === WalletReadyState.Loadable);
459
+ const isMwaOnAndroidChrome = !!wallet2.mwaSupported && isAndroidChrome();
460
+ const installed = isMwaOnAndroidChrome || !!adapter && (adapter.readyState === WalletReadyState.Installed || adapter.readyState === WalletReadyState.Loadable);
450
461
  if (wallet2.installed !== installed) {
451
462
  return __spreadProps(__spreadValues({}, wallet2), { installed });
452
463
  }
@@ -30,6 +30,7 @@ const backpackWallet = () => {
30
30
  isExtension: true,
31
31
  isMobile: true,
32
32
  hasIosSafariExtension: false,
33
+ mwaSupported: true,
33
34
  getQrUri: () => __async(void 0, null, function* () {
34
35
  if (typeof window !== "undefined" && isIosAndRedirectable()) {
35
36
  const url = encodeURIComponent(window.location.href);
@@ -4,5 +4,6 @@ import { glowWallet } from './glow/glow.js';
4
4
  import { backpackWallet } from './backpack/backpack.js';
5
5
  import { solflareWallet } from './solflare/solflare.js';
6
6
  import { metaMaskWallet } from './metaMask/metaMask.js';
7
- export { farcasterWallet, phantomWallet, glowWallet, backpackWallet, solflareWallet, metaMaskWallet };
7
+ import { seedVaultWallet } from './seedVault/seedVault.js';
8
+ export { farcasterWallet, phantomWallet, glowWallet, backpackWallet, solflareWallet, metaMaskWallet, seedVaultWallet };
8
9
  export declare const allWallets: (() => import("../../types/Wallet.js").Wallet)[];
@@ -5,7 +5,8 @@ import { glowWallet } from "./glow/glow.js";
5
5
  import { backpackWallet } from "./backpack/backpack.js";
6
6
  import { solflareWallet } from "./solflare/solflare.js";
7
7
  import { metaMaskWallet } from "./metaMask/metaMask.js";
8
- const allWallets = [phantomWallet, glowWallet, backpackWallet, solflareWallet, metaMaskWallet];
8
+ import { seedVaultWallet } from "./seedVault/seedVault.js";
9
+ const allWallets = [phantomWallet, glowWallet, backpackWallet, solflareWallet, metaMaskWallet, seedVaultWallet];
9
10
  export {
10
11
  allWallets,
11
12
  backpackWallet,
@@ -13,5 +14,6 @@ export {
13
14
  glowWallet,
14
15
  metaMaskWallet,
15
16
  phantomWallet,
17
+ seedVaultWallet,
16
18
  solflareWallet
17
19
  };
@@ -30,6 +30,7 @@ const phantomWallet = () => {
30
30
  isExtension: true,
31
31
  isMobile: true,
32
32
  hasIosSafariExtension: false,
33
+ mwaSupported: true,
33
34
  getQrUri: () => __async(void 0, null, function* () {
34
35
  if (typeof window !== "undefined" && isIosAndRedirectable()) {
35
36
  const url = encodeURIComponent(window.location.href);
@@ -0,0 +1,2 @@
1
+ import { Wallet } from '../../../types/Wallet.js';
2
+ export declare const seedVaultWallet: () => Wallet;
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ var __async = (__this, __arguments, generator) => {
3
+ return new Promise((resolve, reject) => {
4
+ var fulfilled = (value) => {
5
+ try {
6
+ step(generator.next(value));
7
+ } catch (e) {
8
+ reject(e);
9
+ }
10
+ };
11
+ var rejected = (value) => {
12
+ try {
13
+ step(generator.throw(value));
14
+ } catch (e) {
15
+ reject(e);
16
+ }
17
+ };
18
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
19
+ step((generator = generator.apply(__this, __arguments)).next());
20
+ });
21
+ };
22
+ import { icon } from "./seedVaultIcon.js";
23
+ const seedVaultWallet = () => {
24
+ return {
25
+ id: "seed_vault_wallet",
26
+ internalId: "SEED_VAULT_WALLET",
27
+ name: "Seed Vault Wallet",
28
+ iconUrl: icon,
29
+ isExtension: false,
30
+ isMobile: true,
31
+ hasIosSafariExtension: false,
32
+ mwaSupported: true,
33
+ // No QR / universal-link path: Seed Vault Wallet has no in-app browser and
34
+ // no `window.solana` injection. MWA is the only entry point.
35
+ getQrUri: () => __async(void 0, null, function* () {
36
+ return "";
37
+ }),
38
+ downloadUrl: "https://solanamobile.com/seeker"
39
+ };
40
+ };
41
+ export {
42
+ seedVaultWallet
43
+ };
@@ -0,0 +1 @@
1
+ export declare const icon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAyNDUgMjQ1IiBmaWxsPSJub25lIj48Y2lyY2xlIGN4PSIxMjIuNSIgY3k9IjEyMi41IiByPSIxMjIuNSIgZmlsbD0iIzAwMDAwMCIvPjxwYXRoIGQ9Ik0xMjIuNSAwQzE5MC4xNTUgMCAyNDUgNTQuODQ1MSAyNDUgMTIyLjVDMjQ1IDE5MC4xNTUgMTkwLjE1NSAyNDUgMTIyLjUgMjQ1QzU1LjAxMTkgMjQ1IDAuMjcyMzYgMTkwLjQyNSAwLjAwMjkyOTY5IDEyM0gwQzAgMTIyLjkzNiAwLjAwMDcyMDUyIDEyMi44NzIgMC4wMDA5NzY1NjIgMTIyLjgwOEMwLjAwMDcyNDU4OCAxMjIuNzA1IDAgMTIyLjYwMyAwIDEyMi41QzAgNTQuODQ1MSA1NC44NDUxIDAgMTIyLjUgMFpNMTIyLjUgMjBDODQuOTY4MiAyMCA1Mi4xNDc2IDQwLjE3MTkgMzQuMjg5MSA3MC4yNjU2QzU2LjU3MTEgNTUuOTIyOCA4Ny44NTU5IDQ3IDEyMi41IDQ3QzEzNy4zNjQgNDcgMTUwLjY3IDQ5LjQ5NjEgMTY0IDU1QzE3Ny4zMyA2MC41MDM5IDE4OC43MTggNzAuOTQxIDE5NS43OTMgODQuNTkyOEMxNzcuNDEgNzQuMDIwMiAxNTEuNzAxIDY3IDEyMi41IDY3QzkxLjc5NDEgNjcgNjQuOTQ3OSA3NC43NjE4IDQ2LjQyMjkgODYuMjU0OUMzMi44MzEzIDk0LjY4NzIgMjUuMDkzNSAxMDQuMDg2IDIxLjg0MDggMTEzSDY2VjEzM0gyMC41MzEyQzI1Ljc4OTUgMTg0LjY3NyA2OS40MzU3IDIyNSAxMjIuNSAyMjVDMTU5LjQ0IDIyNSAxOTEuODE0IDIwNS40NTkgMjA5Ljg1MyAxNzYuMTVDMTg3LjYxNCAxOTAuMjQ5IDE1Ni42MDEgMTk5IDEyMi4yOTMgMTk5QzEwNy40MjkgMTk5IDk0LjEyMzQgMTk2LjUwNCA4MC43OTMgMTkxQzY3LjQ2MjUgMTg1LjQ5NiA1Ni4wNzUyIDE3NS4wNTkgNDkgMTYxLjQwN0M2Ny4zODI2IDE3MS45OCA5My4wOTIzIDE3OSAxMjIuMjkzIDE3OUMxNTIuOTk5IDE3OSAxNzkuODQ1IDE3MS4yMzggMTk4LjM3IDE1OS43NDVDMjExLjk2MiAxNTEuMzEzIDIxOS42OTkgMTQxLjkxNCAyMjIuOTUyIDEzM0gxNzlWMTEzSDIyNC41NjNDMjE5Ljc3IDYwLjg0NDYgMTc1LjkwNiAyMCAxMjIuNSAyMFpNMTIyLjUgODZDMTQyLjY1OCA4NiAxNTkgMTAyLjM0MiAxNTkgMTIyLjVDMTU5IDE0Mi42NTggMTQyLjY1OCAxNTkgMTIyLjUgMTU5QzEwMi4zNDIgMTU5IDg2IDE0Mi42NTggODYgMTIyLjVDODYgMTAyLjM0MiAxMDIuMzQyIDg2IDEyMi41IDg2Wk0xMjIuNSAxMDZDMTEzLjM4NyAxMDYgMTA2IDExMy4zODcgMTA2IDEyMi41QzEwNiAxMzEuNjEzIDExMy4zODcgMTM5IDEyMi41IDEzOUMxMzEuNjEzIDEzOSAxMzkgMTMxLjYxMyAxMzkgMTIyLjVDMTM5IDExMy4zODcgMTMxLjYxMyAxMDYgMTIyLjUgMTA2WiIgZmlsbD0iI0ZGRkZGRiIvPjwvc3ZnPgo=";
@@ -0,0 +1,5 @@
1
+ "use client";
2
+ const icon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAyNDUgMjQ1IiBmaWxsPSJub25lIj48Y2lyY2xlIGN4PSIxMjIuNSIgY3k9IjEyMi41IiByPSIxMjIuNSIgZmlsbD0iIzAwMDAwMCIvPjxwYXRoIGQ9Ik0xMjIuNSAwQzE5MC4xNTUgMCAyNDUgNTQuODQ1MSAyNDUgMTIyLjVDMjQ1IDE5MC4xNTUgMTkwLjE1NSAyNDUgMTIyLjUgMjQ1QzU1LjAxMTkgMjQ1IDAuMjcyMzYgMTkwLjQyNSAwLjAwMjkyOTY5IDEyM0gwQzAgMTIyLjkzNiAwLjAwMDcyMDUyIDEyMi44NzIgMC4wMDA5NzY1NjIgMTIyLjgwOEMwLjAwMDcyNDU4OCAxMjIuNzA1IDAgMTIyLjYwMyAwIDEyMi41QzAgNTQuODQ1MSA1NC44NDUxIDAgMTIyLjUgMFpNMTIyLjUgMjBDODQuOTY4MiAyMCA1Mi4xNDc2IDQwLjE3MTkgMzQuMjg5MSA3MC4yNjU2QzU2LjU3MTEgNTUuOTIyOCA4Ny44NTU5IDQ3IDEyMi41IDQ3QzEzNy4zNjQgNDcgMTUwLjY3IDQ5LjQ5NjEgMTY0IDU1QzE3Ny4zMyA2MC41MDM5IDE4OC43MTggNzAuOTQxIDE5NS43OTMgODQuNTkyOEMxNzcuNDEgNzQuMDIwMiAxNTEuNzAxIDY3IDEyMi41IDY3QzkxLjc5NDEgNjcgNjQuOTQ3OSA3NC43NjE4IDQ2LjQyMjkgODYuMjU0OUMzMi44MzEzIDk0LjY4NzIgMjUuMDkzNSAxMDQuMDg2IDIxLjg0MDggMTEzSDY2VjEzM0gyMC41MzEyQzI1Ljc4OTUgMTg0LjY3NyA2OS40MzU3IDIyNSAxMjIuNSAyMjVDMTU5LjQ0IDIyNSAxOTEuODE0IDIwNS40NTkgMjA5Ljg1MyAxNzYuMTVDMTg3LjYxNCAxOTAuMjQ5IDE1Ni42MDEgMTk5IDEyMi4yOTMgMTk5QzEwNy40MjkgMTk5IDk0LjEyMzQgMTk2LjUwNCA4MC43OTMgMTkxQzY3LjQ2MjUgMTg1LjQ5NiA1Ni4wNzUyIDE3NS4wNTkgNDkgMTYxLjQwN0M2Ny4zODI2IDE3MS45OCA5My4wOTIzIDE3OSAxMjIuMjkzIDE3OUMxNTIuOTk5IDE3OSAxNzkuODQ1IDE3MS4yMzggMTk4LjM3IDE1OS43NDVDMjExLjk2MiAxNTEuMzEzIDIxOS42OTkgMTQxLjkxNCAyMjIuOTUyIDEzM0gxNzlWMTEzSDIyNC41NjNDMjE5Ljc3IDYwLjg0NDYgMTc1LjkwNiAyMCAxMjIuNSAyMFpNMTIyLjUgODZDMTQyLjY1OCA4NiAxNTkgMTAyLjM0MiAxNTkgMTIyLjVDMTU5IDE0Mi42NTggMTQyLjY1OCAxNTkgMTIyLjUgMTU5QzEwMi4zNDIgMTU5IDg2IDE0Mi42NTggODYgMTIyLjVDODYgMTAyLjM0MiAxMDIuMzQyIDg2IDEyMi41IDg2Wk0xMjIuNSAxMDZDMTEzLjM4NyAxMDYgMTA2IDExMy4zODcgMTA2IDEyMi41QzEwNiAxMzEuNjEzIDExMy4zODcgMTM5IDEyMi41IDEzOUMxMzEuNjEzIDEzOSAxMzkgMTMxLjYxMyAxMzkgMTIyLjVDMTM5IDExMy4zODcgMTMxLjYxMyAxMDYgMTIyLjUgMTA2WiIgZmlsbD0iI0ZGRkZGRiIvPjwvc3ZnPgo=";
3
+ export {
4
+ icon
5
+ };
@@ -30,6 +30,7 @@ const solflareWallet = () => {
30
30
  isExtension: true,
31
31
  isMobile: true,
32
32
  hasIosSafariExtension: false,
33
+ mwaSupported: true,
33
34
  getQrUri: () => __async(void 0, null, function* () {
34
35
  if (typeof window !== "undefined" && isIosAndRedirectable()) {
35
36
  const url = encodeURIComponent(window.location.href);
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@getpara/solana-wallet-connectors",
3
- "version": "2.28.0",
3
+ "version": "2.29.0",
4
4
  "dependencies": {
5
- "@getpara/react-common": "2.28.0",
6
- "@getpara/web-sdk": "2.28.0",
5
+ "@getpara/react-common": "2.29.0",
6
+ "@getpara/web-sdk": "2.29.0",
7
7
  "bs58": "^6.0.0"
8
8
  },
9
9
  "devDependencies": {
@@ -23,7 +23,7 @@
23
23
  "dist",
24
24
  "package.json"
25
25
  ],
26
- "gitHead": "cb74d2b02aed6a8a5373249418b315d686b83b66",
26
+ "gitHead": "3fe797a65534cf466471441317763b1cef00b5b5",
27
27
  "main": "dist/index.js",
28
28
  "peerDependencies": {
29
29
  "@farcaster/mini-app-solana": "^1.0.5",