@getpara/solana-wallet-connectors 1.1.0 → 1.3.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.
- package/dist/index.js +2 -3
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/package.json +5 -4
- package/dist/providers/ParaSolanaProvider.js +0 -42
- package/dist/providers/SolanaExternalWalletContext.js +0 -125
- package/dist/types/CommonTypes.js +0 -1
- package/dist/types/Wallet.js +0 -1
- package/dist/wallets/connectors/backpack/backpack.js +0 -12
- package/dist/wallets/connectors/backpack/backpackIcon.js +0 -1
- package/dist/wallets/connectors/glow/glow.js +0 -12
- package/dist/wallets/connectors/glow/glowIcon.js +0 -1
- package/dist/wallets/connectors/index.js +0 -4
- package/dist/wallets/connectors/phantom/phantom.js +0 -12
- package/dist/wallets/connectors/phantom/phantomIcon.js +0 -1
package/dist/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export * from './wallets/connectors/index.js';
|
|
1
|
+
"use client";
|
|
2
|
+
import{createContext as X,useEffect as L,useMemo as J}from"react";import{useWallet as H}from"@solana/wallet-adapter-react";import{WalletReadyState as E}from"@solana/wallet-adapter-base";import{createContext as O,useContext as U,useEffect as m,useMemo as Y,useState as f}from"react";import{ConnectionProvider as b,WalletProvider as v}from"@solana/wallet-adapter-react";import{useExternalWalletProviderStore as x}from"@getpara/react-sdk";import{createDefaultAddressSelector as h,createDefaultAuthorizationResultCache as G,createDefaultWalletNotFoundHandler as B,SolanaMobileWalletAdapter as Z}from"@solana-mobile/wallet-adapter-mobile";import{jsx as d}from"react/jsx-runtime";var R={wallets:[]},w=O(R);function V({children:c,wallets:a,endpoint:A,appIdentity:j,chain:u,connectionConfig:l}){let o=x(i=>i.updateState),n=x(i=>i.SolanaProvider),r=x(i=>i.solanaContext),[s,N]=f(!0);m(()=>{N(!1)},[]),m(()=>{(!r||!n)&&o({SolanaProvider:z,solanaContext:D})},[]);let g=Y(()=>({wallets:a}),[a]);return!r||!n?null:d(b,{endpoint:A,config:l,children:d(v,{wallets:[new Z({addressSelector:h(),appIdentity:j,authorizationResultCache:G(),chain:u,onWalletNotFound:B()})],localStorageKey:"paraSolanaExternal",autoConnect:s,children:d(w.Provider,{value:g,children:c})})})}var p=()=>U(w);import{WalletType as y}from"@getpara/web-sdk";import{jsx as K}from"react/jsx-runtime";var F={wallets:[],disconnect:()=>Promise.resolve()},D=X(F);function z({children:c,para:a,onSwitchWallet:A}){let{wallets:j,select:u,disconnect:l,publicKey:o,wallet:n,connecting:r}=H(),{wallets:s}=p(),N=async()=>{await l(),await a.logout()},g=async(M,e)=>{try{await a.externalWalletLogin({address:M,type:y.SOLANA,provider:e})}catch{throw await N(),"Error logging you in. Please try again."}},i=async M=>{let e;if(!M)await a.logout();else try{await g(M,n?.adapter?.name)}catch(t){e=t}A({address:M,error:e})};L(()=>{let M=a.externalWallets[o?.toString()??""];o&&!M&&N()},[]),L(()=>{let M=a.externalWallets[a.currentExternalWalletAddresses?.[0]??""];!r&&M?.type===y.SOLANA&&M?.address!==o?.toString()&&i(o?.toString())},[o,r]);let C=async M=>{if(await l(),!M)return{address:void 0,error:"Adapter not found."};u(M.name),await new Promise(I=>setTimeout(I,100));let e,t;try{if(await M.connect(),e=M.publicKey.toString(),e)try{await g(e,M.name)}catch(I){await l(),e=void 0,t=I}}catch(I){switch(I.message){case"User aborted.":case"Approval Denied":case"You canceled this request.":{t="Connection request rejected";break}default:{t="An unknown error occurred";break}}}return{address:e,error:t}},k=M=>j.find(e=>e.adapter.name==="Mobile Wallet Adapter"||e.adapter.name===M?e:!1)?.adapter,T=s.map(M=>{let e=M(),t=k(e.name);return{connect:()=>C(t),connectMobile:()=>C(t),getQrUri:()=>"",type:y.SOLANA,installed:t&&(t?.readyState===E.Installed||t?.readyState===E.Loadable),...e}}),S=async()=>{await l(),typeof window!==void 0&&window?.location.reload()};return K(D.Provider,{value:J(()=>({wallets:T,disconnect:S}),[T,S]),children:c})}var W="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAzNl85NDApIj4KICAgIDxwYXRoIGQ9Ik0xMiAyNEMxOC42Mjc0IDI0IDI0IDE4LjYyNzQgMjQgMTJDMjQgNS4zNzI1OCAxOC42Mjc0IDAgMTIgMEM1LjM3MjU4IDAgMCA1LjM3MjU4IDAgMTJDMCAxOC42Mjc0IDUuMzcyNTggMjQgMTIgMjRaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMTAzNl85NDApIi8+CiAgICA8cGF0aCBkPSJNMjAuODgyMyAxMS44ODk3SDE4Ljc1NUMxOC43NTUgNy41MzIyMyAxNS4yMjgyIDQgMTAuODc3MyA0QzYuNTgwMzcgNCAzLjA4Njg5IDcuNDQ1NzYgMy4wMDEzOSAxMS43Mjg2QzIuOTEyOTMgMTYuMTU1NyA3LjA2MDAxIDIwIDExLjQ4MDkgMjBIMTIuMDM3QzE1LjkzNDUgMjAgMjEuMTU4NSAxNi45NDQzIDIxLjk3NDcgMTMuMjIxMUMyMi4xMjU0IDEyLjUzNDggMjEuNTg0MSAxMS44ODk3IDIwLjg4MjMgMTEuODg5N1pNNy43MTU5NiAxMi4wODM4QzcuNzE1OTYgMTIuNjY2NSA3LjI0MDA5IDEzLjE0MzEgNi42NTgyNyAxMy4xNDMxQzYuMDc2NDQgMTMuMTQzMSA1LjYwMDYgMTIuNjY2MyA1LjYwMDYgMTIuMDgzOFYxMC4zNzAxQzUuNjAwNiA5Ljc4NzQ0IDYuMDc2NDQgOS4zMTA4NCA2LjY1ODI3IDkuMzEwODRDNy4yNDAwOSA5LjMxMDg0IDcuNzE1OTYgOS43ODc0NCA3LjcxNTk2IDEwLjM3MDFWMTIuMDgzOFpNMTEuMzg4NiAxMi4wODM4QzExLjM4ODYgMTIuNjY2NSAxMC45MTI4IDEzLjE0MzEgMTAuMzMxIDEzLjE0MzFDOS43NDkxNCAxMy4xNDMxIDkuMjczMzIgMTIuNjY2MyA5LjI3MzMyIDEyLjA4MzhWMTAuMzcwMUM5LjI3MzMyIDkuNzg3NDQgOS43NDkzNSA5LjMxMDg0IDEwLjMzMSA5LjMxMDg0QzEwLjkxMjggOS4zMTA4NCAxMS4zODg2IDkuNzg3NDQgMTEuMzg4NiAxMC4zNzAxVjEyLjA4MzhaIiBmaWxsPSJ1cmwoI3BhaW50MV9saW5lYXJfMTAzNl85NDApIi8+CiAgPC9nPgogIDxkZWZzPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzEwMzZfOTQwIiB4MT0iMTIiIHkxPSIwIiB4Mj0iMTIiIHkyPSIyNCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjNTM0QkIxIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzU1MUJGOSIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8xMDM2Xzk0MCIgeDE9IjEyLjUiIHkxPSI0IiB4Mj0iMTIuNSIgeTI9IjIwIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IndoaXRlIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMC44MiIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfMTAzNl85NDAiPgogICAgICA8cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIi8+CiAgICA8L2NsaXBQYXRoPgogIDwvZGVmcz4KPC9zdmc+";var q=()=>({id:"phantom",name:"Phantom",iconUrl:W,isExtension:!0,isMobile:!0,getUri:()=>"",downloadUrl:"https://phantom.app/download"});var P="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAzN18xMjEwKSI+CiAgICA8cGF0aCBkPSJNMjAuNDE2MiAyMC41NTQxQzE4LjE3MzggMjIuNzY1OCAxNS4xNDk2IDI0LjAwNCAxMiAyNEM4Ljg1NzU3IDI0LjAwNDcgNS44Mzk2NSAyMi43NzE5IDMuNTk5MjQgMjAuNTY4NEM4LjUxMzI5IDE2LjY5NzkgMTUuNDk2NiAxNi42OTM0IDIwLjQxNjIgMjAuNTU0MVpNMjAuNTU0MSAyMC40MTYyQzIyLjc2NTggMTguMTczOCAyNC4wMDQgMTUuMTQ5NiAyNCAxMkMyNCA4LjcyOTQ4IDIyLjY5MTggNS43NjU2MSAyMC41NzA2IDMuNjAwMzRDMTYuNjk3OSA4LjUyODczIDE2LjY5MzQgMTUuNDk3NyAyMC41NTQxIDIwLjQxNjJaTTIwLjQzMzkgMy40NjM1NkMxNS41MDc3IDcuMzQ0MDYgOC41MDIyNiA3LjMzODU1IDMuNTgwNDggMy40NDkyMkM1LjgyMzA2IDEuMjM1MjkgOC44NDg3MSAtMC4wMDQyMjQ3NCAxMiAxLjA4MTk0ZS0wNUMxNS4yODcxIDEuMDgxOTRlLTA1IDE4LjI2NjQgMS4zMjI1NiAyMC40MzM5IDMuNDYzNTZaTTMuNDQ5MjIgMy41ODA0OEMxLjIzNTI5IDUuODIzMDYgLTAuMDA0MjI0NzQgOC44NDg3MSAxLjA4MTk0ZS0wNSAxMkMxLjA4MTk0ZS0wNSAxNS4yODgyIDEuMzIyNTYgMTguMjY2NCAzLjQ2MzU2IDIwLjQzMzlDNy4zNDQwNiAxNS41MDc3IDcuMzM4NTUgOC41MDIyNiAzLjQ0OTIyIDMuNTgwNDhaIiBmaWxsPSIjQ0M2MkQ1Ii8+CiAgPC9nPgogIDxkZWZzPgogICAgPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDM3XzEyMTAiPgogICAgICA8cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIi8+CiAgICA8L2NsaXBQYXRoPgogIDwvZGVmcz4KPC9zdmc+";var _=()=>({id:"glow",name:"Glow",iconUrl:P,isExtension:!0,isMobile:!0,getUri:()=>"",downloadUrl:"https://glow.app"});var Q="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPG1hc2sgaWQ9Im1hc2swXzEzNDFfMzQiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSI0IiB5PSIwIiB3aWR0aD0iMTciIGhlaWdodD0iMjQiPgo8cGF0aCBkPSJNMjAuNSAwSDRWMjRIMjAuNVYwWiIgZmlsbD0id2hpdGUiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzEzNDFfMzQpIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy44MTMgMS44ODcwOEMxNC42ODUzIDEuODg3MDggMTUuNTAzNSAyLjAwNDAyIDE2LjI2MTIgMi4yMjA4OUMxNS41MTk1IDAuNDkyMjU0IDEzLjk3OTUgMCAxMi4yNjU2IDBDMTAuNTQ4MyAwIDkuMDA1NjUgMC40OTQxODggOC4yNjU2MiAyLjIzMTA3QzkuMDE3NjUgMi4wMDY1NyA5LjgzMjM2IDEuODg3MDggMTAuNzAxNyAxLjg4NzA4SDEzLjgxM1pNMTAuNTAyMiAzLjYyMjU2QzYuMzYwMDMgMy42MjI1NiA0IDYuODgxMTQgNCAxMC45MDA4VjE1LjAzQzQgMTUuNDMyIDQuMzM1NzkgMTUuNzUgNC43NSAxNS43NUgxOS43NUMyMC4xNjQyIDE1Ljc1IDIwLjUgMTUuNDMyIDIwLjUgMTUuMDNWMTAuOTAwOEMyMC41IDYuODgxMTQgMTcuNzU1NiAzLjYyMjU2IDEzLjYxMzUgMy42MjI1NkgxMC41MDIyWk0xMi4yNDQxIDEwLjkzNjVDMTMuNjkzOSAxMC45MzY1IDE0Ljg2OTIgOS43NjEyMyAxNC44NjkyIDguMzExNTNDMTQuODY5MiA2Ljg2MTc4IDEzLjY5MzkgNS42ODY1MyAxMi4yNDQxIDUuNjg2NTNDMTAuNzk0NCA1LjY4NjUzIDkuNjE5MTQgNi44NjE3OCA5LjYxOTE0IDguMzExNTNDOS42MTkxNCA5Ljc2MTIzIDEwLjc5NDQgMTAuOTM2NSAxMi4yNDQxIDEwLjkzNjVaTTQgMTguMTc3MUM0IDE3Ljc3NTEgNC4zMzU3OSAxNy40NDkyIDQuNzUgMTcuNDQ5MkgxOS43NUMyMC4xNjQyIDE3LjQ0OTIgMjAuNSAxNy43NzUxIDIwLjUgMTguMTc3MVYyMi41NDRDMjAuNSAyMy4zNDc5IDE5LjgyODQgMjMuOTk5NyAxOSAyMy45OTk3SDUuNUM0LjY3MTU3IDIzLjk5OTcgNCAyMy4zNDc5IDQgMjIuNTQ0VjE4LjE3NzFaIiBmaWxsPSIjRTMzRTNGIi8+CjwvZz4KPC9zdmc+Cg==";var $=()=>({id:"backpack",name:"Backpack",iconUrl:Q,isExtension:!0,isMobile:!0,getUri:()=>"",downloadUrl:"https://backpack.app/download"});export{V as ParaSolanaProvider,D as SolanaExternalWalletContext,z as SolanaExternalWalletProvider,$ as backpackWallet,_ as glowWallet,q as phantomWallet};
|
package/dist/index.js.br
ADDED
|
Binary file
|
package/dist/index.js.gz
ADDED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getpara/solana-wallet-connectors",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -9,10 +9,11 @@
|
|
|
9
9
|
"./connectors": "./dist/wallets/connectors/index.js"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@getpara/react-sdk": "1.
|
|
12
|
+
"@getpara/react-sdk": "1.3.0"
|
|
13
13
|
},
|
|
14
14
|
"scripts": {
|
|
15
|
-
"build": "rm -rf dist &&
|
|
15
|
+
"build": "rm -rf dist && yarn typegen && node ./scripts/build.mjs",
|
|
16
|
+
"typegen": "tsc --emitDeclarationOnly",
|
|
16
17
|
"test": "vitest run --coverage"
|
|
17
18
|
},
|
|
18
19
|
"devDependencies": {
|
|
@@ -36,5 +37,5 @@
|
|
|
36
37
|
"dist",
|
|
37
38
|
"package.json"
|
|
38
39
|
],
|
|
39
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "2d421556a0a1497abd08e18dca94f08ec3ad640b"
|
|
40
41
|
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useContext, useEffect, useMemo, useState } from 'react';
|
|
3
|
-
import { ConnectionProvider, WalletProvider as SolanaWalletProvider } from '@solana/wallet-adapter-react';
|
|
4
|
-
import { useExternalWalletProviderStore } from '@getpara/react-sdk';
|
|
5
|
-
import { SolanaExternalWalletContext, SolanaExternalWalletProvider } from './SolanaExternalWalletContext.js';
|
|
6
|
-
import { createDefaultAddressSelector, createDefaultAuthorizationResultCache, createDefaultWalletNotFoundHandler, SolanaMobileWalletAdapter, } from '@solana-mobile/wallet-adapter-mobile';
|
|
7
|
-
export const defaultWallet = {
|
|
8
|
-
wallets: [],
|
|
9
|
-
};
|
|
10
|
-
export const ParaSolanaContext = createContext(defaultWallet);
|
|
11
|
-
export function ParaSolanaProvider({ children, wallets: walletFns, endpoint, appIdentity, chain, connectionConfig, }) {
|
|
12
|
-
const updateExternalWalletProviderState = useExternalWalletProviderStore(state => state.updateState);
|
|
13
|
-
const SolanaProvider = useExternalWalletProviderStore(state => state.SolanaProvider);
|
|
14
|
-
const solanaContext = useExternalWalletProviderStore(state => state.solanaContext);
|
|
15
|
-
const [shouldAutoConnect, setShouldAutoConnect] = useState(true);
|
|
16
|
-
// Only auto connect on initial render, after that rely on our connect function
|
|
17
|
-
useEffect(() => {
|
|
18
|
-
setShouldAutoConnect(false);
|
|
19
|
-
}, []);
|
|
20
|
-
useEffect(() => {
|
|
21
|
-
if (!solanaContext || !SolanaProvider) {
|
|
22
|
-
updateExternalWalletProviderState({
|
|
23
|
-
SolanaProvider: SolanaExternalWalletProvider,
|
|
24
|
-
solanaContext: SolanaExternalWalletContext,
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
}, []);
|
|
28
|
-
const value = useMemo(() => ({ wallets: walletFns }), [walletFns]);
|
|
29
|
-
if (!solanaContext || !SolanaProvider) {
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
return (_jsx(ConnectionProvider, { endpoint: endpoint, config: connectionConfig, children: _jsx(SolanaWalletProvider, { wallets: [
|
|
33
|
-
new SolanaMobileWalletAdapter({
|
|
34
|
-
addressSelector: createDefaultAddressSelector(),
|
|
35
|
-
appIdentity,
|
|
36
|
-
authorizationResultCache: createDefaultAuthorizationResultCache(),
|
|
37
|
-
chain,
|
|
38
|
-
onWalletNotFound: createDefaultWalletNotFoundHandler(),
|
|
39
|
-
}),
|
|
40
|
-
], localStorageKey: "paraSolanaExternal", autoConnect: shouldAutoConnect, children: _jsx(ParaSolanaContext.Provider, { value: value, children: children }) }) }));
|
|
41
|
-
}
|
|
42
|
-
export const useParaSolana = () => useContext(ParaSolanaContext);
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
-
import { createContext, useEffect, useMemo } from 'react';
|
|
12
|
-
import { useWallet } from '@solana/wallet-adapter-react';
|
|
13
|
-
import { WalletReadyState } from '@solana/wallet-adapter-base';
|
|
14
|
-
import { useParaSolana } from './ParaSolanaProvider.js';
|
|
15
|
-
import { WalletType } from '@getpara/web-sdk';
|
|
16
|
-
export const defaultSolanaExternalWallet = {
|
|
17
|
-
wallets: [],
|
|
18
|
-
disconnect: () => Promise.resolve(),
|
|
19
|
-
};
|
|
20
|
-
export const SolanaExternalWalletContext = createContext(defaultSolanaExternalWallet);
|
|
21
|
-
export function SolanaExternalWalletProvider({ children, para, onSwitchWallet }) {
|
|
22
|
-
const { wallets: adapters, select: selectWallet, disconnect: _disconnect, publicKey: solanaAddress, wallet, connecting, } = useWallet();
|
|
23
|
-
const { wallets: walletFns } = useParaSolana();
|
|
24
|
-
const reset = () => __awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
yield _disconnect();
|
|
26
|
-
yield para.logout();
|
|
27
|
-
});
|
|
28
|
-
const login = (address, providerName) => __awaiter(this, void 0, void 0, function* () {
|
|
29
|
-
try {
|
|
30
|
-
yield para.externalWalletLogin({ address, type: WalletType.SOLANA, provider: providerName });
|
|
31
|
-
}
|
|
32
|
-
catch (err) {
|
|
33
|
-
yield reset();
|
|
34
|
-
throw 'Error logging you in. Please try again.';
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
const switchWallet = (address) => __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
var _a;
|
|
39
|
-
let error;
|
|
40
|
-
// If we're calling switch wallet with no address, treat it as if the user disconnected the wallet from the app and logout to reset the Para instance.
|
|
41
|
-
if (!address) {
|
|
42
|
-
yield para.logout();
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
try {
|
|
46
|
-
yield login(address, (_a = wallet === null || wallet === void 0 ? void 0 : wallet.adapter) === null || _a === void 0 ? void 0 : _a.name);
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
error = err;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
onSwitchWallet({ address, error });
|
|
53
|
-
});
|
|
54
|
-
useEffect(() => {
|
|
55
|
-
var _a;
|
|
56
|
-
const storedExternalWallet = para.externalWallets[(_a = solanaAddress === null || solanaAddress === void 0 ? void 0 : solanaAddress.toString()) !== null && _a !== void 0 ? _a : ''];
|
|
57
|
-
if (!!solanaAddress && !storedExternalWallet) {
|
|
58
|
-
reset();
|
|
59
|
-
}
|
|
60
|
-
}, []);
|
|
61
|
-
useEffect(() => {
|
|
62
|
-
var _a, _b;
|
|
63
|
-
const storedExternalWallet = para.externalWallets[(_b = (_a = para.currentExternalWalletAddresses) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : ''];
|
|
64
|
-
// If the user is using an external Solana wallet we want to watch for wallet changes and log them in to a different user when the wallet changes
|
|
65
|
-
if (!connecting &&
|
|
66
|
-
(storedExternalWallet === null || storedExternalWallet === void 0 ? void 0 : storedExternalWallet.type) === WalletType.SOLANA &&
|
|
67
|
-
(storedExternalWallet === null || storedExternalWallet === void 0 ? void 0 : storedExternalWallet.address) !== (solanaAddress === null || solanaAddress === void 0 ? void 0 : solanaAddress.toString())) {
|
|
68
|
-
switchWallet(solanaAddress === null || solanaAddress === void 0 ? void 0 : solanaAddress.toString());
|
|
69
|
-
}
|
|
70
|
-
}, [solanaAddress, connecting]);
|
|
71
|
-
const connect = (adapter) => __awaiter(this, void 0, void 0, function* () {
|
|
72
|
-
yield _disconnect();
|
|
73
|
-
if (!adapter) {
|
|
74
|
-
return { address: undefined, error: 'Adapter not found.' };
|
|
75
|
-
}
|
|
76
|
-
selectWallet(adapter.name);
|
|
77
|
-
// Using a timeout here to ensure the selectWallet function sets the wallet completely before connecting.
|
|
78
|
-
// Without this there was a race condition where connect wasn't correctly listening to the adapters connect event.
|
|
79
|
-
yield new Promise(resolve => setTimeout(resolve, 100));
|
|
80
|
-
let address;
|
|
81
|
-
let error;
|
|
82
|
-
try {
|
|
83
|
-
yield adapter.connect();
|
|
84
|
-
address = adapter.publicKey.toString();
|
|
85
|
-
if (address) {
|
|
86
|
-
try {
|
|
87
|
-
yield login(address, adapter.name);
|
|
88
|
-
}
|
|
89
|
-
catch (err) {
|
|
90
|
-
yield _disconnect();
|
|
91
|
-
address = undefined;
|
|
92
|
-
error = err;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
catch (err) {
|
|
97
|
-
switch (err.message) {
|
|
98
|
-
case 'User aborted.':
|
|
99
|
-
case 'Approval Denied':
|
|
100
|
-
case 'You canceled this request.': {
|
|
101
|
-
error = 'Connection request rejected';
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
default: {
|
|
105
|
-
error = 'An unknown error occurred';
|
|
106
|
-
break;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return { address, error };
|
|
111
|
-
});
|
|
112
|
-
const getAdapter = (name) => { var _a; return (_a = adapters.find(a => (a.adapter.name === 'Mobile Wallet Adapter' ? a : a.adapter.name === name ? a : false))) === null || _a === void 0 ? void 0 : _a.adapter; };
|
|
113
|
-
const wallets = walletFns.map(walletFn => {
|
|
114
|
-
const metaData = walletFn();
|
|
115
|
-
const adapter = getAdapter(metaData.name);
|
|
116
|
-
return Object.assign({ connect: () => connect(adapter), connectMobile: () => connect(adapter), getQrUri: () => '', type: WalletType.SOLANA, installed: adapter && ((adapter === null || adapter === void 0 ? void 0 : adapter.readyState) === WalletReadyState.Installed || (adapter === null || adapter === void 0 ? void 0 : adapter.readyState) === WalletReadyState.Loadable) }, metaData);
|
|
117
|
-
});
|
|
118
|
-
const disconnect = () => __awaiter(this, void 0, void 0, function* () {
|
|
119
|
-
yield _disconnect();
|
|
120
|
-
// The solana library seems to keep some state hanging around that will auto receonnect the same wallet if the window isn't refreshed and the wallet connector is selected again in the modal.
|
|
121
|
-
// Refreshing here after a disconnect fixes the issue.
|
|
122
|
-
typeof window !== undefined && (window === null || window === void 0 ? void 0 : window.location.reload());
|
|
123
|
-
});
|
|
124
|
-
return (_jsx(SolanaExternalWalletContext.Provider, { value: useMemo(() => ({ wallets, disconnect }), [wallets, disconnect]), children: children }));
|
|
125
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/types/Wallet.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { icon } from './backpackIcon.js';
|
|
2
|
-
export const backpackWallet = () => {
|
|
3
|
-
return {
|
|
4
|
-
id: 'backpack',
|
|
5
|
-
name: 'Backpack',
|
|
6
|
-
iconUrl: icon,
|
|
7
|
-
isExtension: true,
|
|
8
|
-
isMobile: true,
|
|
9
|
-
getUri: () => '',
|
|
10
|
-
downloadUrl: 'https://backpack.app/download',
|
|
11
|
-
};
|
|
12
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const icon = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPG1hc2sgaWQ9Im1hc2swXzEzNDFfMzQiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSI0IiB5PSIwIiB3aWR0aD0iMTciIGhlaWdodD0iMjQiPgo8cGF0aCBkPSJNMjAuNSAwSDRWMjRIMjAuNVYwWiIgZmlsbD0id2hpdGUiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzEzNDFfMzQpIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy44MTMgMS44ODcwOEMxNC42ODUzIDEuODg3MDggMTUuNTAzNSAyLjAwNDAyIDE2LjI2MTIgMi4yMjA4OUMxNS41MTk1IDAuNDkyMjU0IDEzLjk3OTUgMCAxMi4yNjU2IDBDMTAuNTQ4MyAwIDkuMDA1NjUgMC40OTQxODggOC4yNjU2MiAyLjIzMTA3QzkuMDE3NjUgMi4wMDY1NyA5LjgzMjM2IDEuODg3MDggMTAuNzAxNyAxLjg4NzA4SDEzLjgxM1pNMTAuNTAyMiAzLjYyMjU2QzYuMzYwMDMgMy42MjI1NiA0IDYuODgxMTQgNCAxMC45MDA4VjE1LjAzQzQgMTUuNDMyIDQuMzM1NzkgMTUuNzUgNC43NSAxNS43NUgxOS43NUMyMC4xNjQyIDE1Ljc1IDIwLjUgMTUuNDMyIDIwLjUgMTUuMDNWMTAuOTAwOEMyMC41IDYuODgxMTQgMTcuNzU1NiAzLjYyMjU2IDEzLjYxMzUgMy42MjI1NkgxMC41MDIyWk0xMi4yNDQxIDEwLjkzNjVDMTMuNjkzOSAxMC45MzY1IDE0Ljg2OTIgOS43NjEyMyAxNC44NjkyIDguMzExNTNDMTQuODY5MiA2Ljg2MTc4IDEzLjY5MzkgNS42ODY1MyAxMi4yNDQxIDUuNjg2NTNDMTAuNzk0NCA1LjY4NjUzIDkuNjE5MTQgNi44NjE3OCA5LjYxOTE0IDguMzExNTNDOS42MTkxNCA5Ljc2MTIzIDEwLjc5NDQgMTAuOTM2NSAxMi4yNDQxIDEwLjkzNjVaTTQgMTguMTc3MUM0IDE3Ljc3NTEgNC4zMzU3OSAxNy40NDkyIDQuNzUgMTcuNDQ5MkgxOS43NUMyMC4xNjQyIDE3LjQ0OTIgMjAuNSAxNy43NzUxIDIwLjUgMTguMTc3MVYyMi41NDRDMjAuNSAyMy4zNDc5IDE5LjgyODQgMjMuOTk5NyAxOSAyMy45OTk3SDUuNUM0LjY3MTU3IDIzLjk5OTcgNCAyMy4zNDc5IDQgMjIuNTQ0VjE4LjE3NzFaIiBmaWxsPSIjRTMzRTNGIi8+CjwvZz4KPC9zdmc+Cg==';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAzN18xMjEwKSI+CiAgICA8cGF0aCBkPSJNMjAuNDE2MiAyMC41NTQxQzE4LjE3MzggMjIuNzY1OCAxNS4xNDk2IDI0LjAwNCAxMiAyNEM4Ljg1NzU3IDI0LjAwNDcgNS44Mzk2NSAyMi43NzE5IDMuNTk5MjQgMjAuNTY4NEM4LjUxMzI5IDE2LjY5NzkgMTUuNDk2NiAxNi42OTM0IDIwLjQxNjIgMjAuNTU0MVpNMjAuNTU0MSAyMC40MTYyQzIyLjc2NTggMTguMTczOCAyNC4wMDQgMTUuMTQ5NiAyNCAxMkMyNCA4LjcyOTQ4IDIyLjY5MTggNS43NjU2MSAyMC41NzA2IDMuNjAwMzRDMTYuNjk3OSA4LjUyODczIDE2LjY5MzQgMTUuNDk3NyAyMC41NTQxIDIwLjQxNjJaTTIwLjQzMzkgMy40NjM1NkMxNS41MDc3IDcuMzQ0MDYgOC41MDIyNiA3LjMzODU1IDMuNTgwNDggMy40NDkyMkM1LjgyMzA2IDEuMjM1MjkgOC44NDg3MSAtMC4wMDQyMjQ3NCAxMiAxLjA4MTk0ZS0wNUMxNS4yODcxIDEuMDgxOTRlLTA1IDE4LjI2NjQgMS4zMjI1NiAyMC40MzM5IDMuNDYzNTZaTTMuNDQ5MjIgMy41ODA0OEMxLjIzNTI5IDUuODIzMDYgLTAuMDA0MjI0NzQgOC44NDg3MSAxLjA4MTk0ZS0wNSAxMkMxLjA4MTk0ZS0wNSAxNS4yODgyIDEuMzIyNTYgMTguMjY2NCAzLjQ2MzU2IDIwLjQzMzlDNy4zNDQwNiAxNS41MDc3IDcuMzM4NTUgOC41MDIyNiAzLjQ0OTIyIDMuNTgwNDhaIiBmaWxsPSIjQ0M2MkQ1Ii8+CiAgPC9nPgogIDxkZWZzPgogICAgPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDM3XzEyMTAiPgogICAgICA8cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIi8+CiAgICA8L2NsaXBQYXRoPgogIDwvZGVmcz4KPC9zdmc+';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { icon } from './phantomIcon.js';
|
|
2
|
-
export const phantomWallet = () => {
|
|
3
|
-
return {
|
|
4
|
-
id: 'phantom',
|
|
5
|
-
name: 'Phantom',
|
|
6
|
-
iconUrl: icon,
|
|
7
|
-
isExtension: true,
|
|
8
|
-
isMobile: true,
|
|
9
|
-
getUri: () => '',
|
|
10
|
-
downloadUrl: 'https://phantom.app/download',
|
|
11
|
-
};
|
|
12
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAzNl85NDApIj4KICAgIDxwYXRoIGQ9Ik0xMiAyNEMxOC42Mjc0IDI0IDI0IDE4LjYyNzQgMjQgMTJDMjQgNS4zNzI1OCAxOC42Mjc0IDAgMTIgMEM1LjM3MjU4IDAgMCA1LjM3MjU4IDAgMTJDMCAxOC42Mjc0IDUuMzcyNTggMjQgMTIgMjRaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMTAzNl85NDApIi8+CiAgICA8cGF0aCBkPSJNMjAuODgyMyAxMS44ODk3SDE4Ljc1NUMxOC43NTUgNy41MzIyMyAxNS4yMjgyIDQgMTAuODc3MyA0QzYuNTgwMzcgNCAzLjA4Njg5IDcuNDQ1NzYgMy4wMDEzOSAxMS43Mjg2QzIuOTEyOTMgMTYuMTU1NyA3LjA2MDAxIDIwIDExLjQ4MDkgMjBIMTIuMDM3QzE1LjkzNDUgMjAgMjEuMTU4NSAxNi45NDQzIDIxLjk3NDcgMTMuMjIxMUMyMi4xMjU0IDEyLjUzNDggMjEuNTg0MSAxMS44ODk3IDIwLjg4MjMgMTEuODg5N1pNNy43MTU5NiAxMi4wODM4QzcuNzE1OTYgMTIuNjY2NSA3LjI0MDA5IDEzLjE0MzEgNi42NTgyNyAxMy4xNDMxQzYuMDc2NDQgMTMuMTQzMSA1LjYwMDYgMTIuNjY2MyA1LjYwMDYgMTIuMDgzOFYxMC4zNzAxQzUuNjAwNiA5Ljc4NzQ0IDYuMDc2NDQgOS4zMTA4NCA2LjY1ODI3IDkuMzEwODRDNy4yNDAwOSA5LjMxMDg0IDcuNzE1OTYgOS43ODc0NCA3LjcxNTk2IDEwLjM3MDFWMTIuMDgzOFpNMTEuMzg4NiAxMi4wODM4QzExLjM4ODYgMTIuNjY2NSAxMC45MTI4IDEzLjE0MzEgMTAuMzMxIDEzLjE0MzFDOS43NDkxNCAxMy4xNDMxIDkuMjczMzIgMTIuNjY2MyA5LjI3MzMyIDEyLjA4MzhWMTAuMzcwMUM5LjI3MzMyIDkuNzg3NDQgOS43NDkzNSA5LjMxMDg0IDEwLjMzMSA5LjMxMDg0QzEwLjkxMjggOS4zMTA4NCAxMS4zODg2IDkuNzg3NDQgMTEuMzg4NiAxMC4zNzAxVjEyLjA4MzhaIiBmaWxsPSJ1cmwoI3BhaW50MV9saW5lYXJfMTAzNl85NDApIi8+CiAgPC9nPgogIDxkZWZzPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzEwMzZfOTQwIiB4MT0iMTIiIHkxPSIwIiB4Mj0iMTIiIHkyPSIyNCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjNTM0QkIxIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzU1MUJGOSIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8xMDM2Xzk0MCIgeDE9IjEyLjUiIHkxPSI0IiB4Mj0iMTIuNSIgeTI9IjIwIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IndoaXRlIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMC44MiIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfMTAzNl85NDAiPgogICAgICA8cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIi8+CiAgICA8L2NsaXBQYXRoPgogIDwvZGVmcz4KPC9zdmc+';
|