Add support for the Sollet Extension (#68)
* init * fix build * upgrade sol-wallet-adapter * upgrade sol-wallet-adapter
This commit is contained in:
parent
5b4487634e
commit
94ef37ad1a
|
@ -11,7 +11,7 @@
|
|||
"@project-serum/awesome-serum": "1.0.1",
|
||||
"@project-serum/pool": "0.2.2",
|
||||
"@project-serum/serum": "^0.13.30",
|
||||
"@project-serum/sol-wallet-adapter": "^0.1.1",
|
||||
"@project-serum/sol-wallet-adapter": "^0.1.8",
|
||||
"@solana/web3.js": "0.86.1",
|
||||
"@testing-library/jest-dom": "^4.2.4",
|
||||
"@testing-library/react": "^9.3.2",
|
||||
|
|
|
@ -16,6 +16,7 @@ import {
|
|||
LedgerWalletAdapter,
|
||||
SolongWalletAdapter,
|
||||
PhantomWalletAdapter,
|
||||
SolletExtensionAdapter,
|
||||
MathWalletAdapter,
|
||||
} from '../wallet-adapters';
|
||||
|
||||
|
@ -27,6 +28,12 @@ export const WALLET_PROVIDERS = [
|
|||
url: 'https://www.sollet.io',
|
||||
icon: `${ASSET_URL}/sollet.svg`,
|
||||
},
|
||||
{
|
||||
name: 'Sollet Extension',
|
||||
url: 'https://www.sollet.io/extension',
|
||||
icon: `${ASSET_URL}/sollet.svg`,
|
||||
adapter: SolletExtensionAdapter as any,
|
||||
},
|
||||
{
|
||||
name: 'Ledger',
|
||||
url: 'https://www.ledger.com',
|
||||
|
@ -66,24 +73,40 @@ export function WalletProvider({ children }) {
|
|||
[providerUrl],
|
||||
);
|
||||
|
||||
const wallet = useMemo(
|
||||
function () {
|
||||
if (provider) {
|
||||
return new (provider.adapter || Wallet)(
|
||||
let [wallet, setWallet] = useState<WalletAdapter|undefined>(undefined);
|
||||
|
||||
useEffect(() => {
|
||||
if (provider) {
|
||||
const updateWallet = () => {
|
||||
// hack to also update wallet synchronously in case it disconnects
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
wallet = new (provider.adapter || Wallet)(
|
||||
providerUrl,
|
||||
endpoint,
|
||||
) as WalletAdapter;
|
||||
setWallet(wallet);
|
||||
}
|
||||
},
|
||||
[provider, providerUrl, endpoint],
|
||||
);
|
||||
|
||||
if (document.readyState !== 'complete') {
|
||||
// wait to ensure that browser extensions are loaded
|
||||
const listener = () => {
|
||||
updateWallet();
|
||||
window.removeEventListener('load', listener);
|
||||
};
|
||||
window.addEventListener('load', listener);
|
||||
return () => window.removeEventListener('load', listener);
|
||||
} else {
|
||||
updateWallet();
|
||||
}
|
||||
}
|
||||
}, [provider, providerUrl, endpoint]);
|
||||
|
||||
const [connected, setConnected] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (wallet) {
|
||||
wallet.on('connect', () => {
|
||||
if (wallet.publicKey) {
|
||||
if (wallet?.publicKey) {
|
||||
console.log('connected');
|
||||
localStorage.removeItem('feeDiscountKey');
|
||||
setConnected(true);
|
||||
|
@ -118,7 +141,7 @@ export function WalletProvider({ children }) {
|
|||
|
||||
return () => {
|
||||
setConnected(false);
|
||||
if (wallet) {
|
||||
if (wallet && wallet.connected) {
|
||||
wallet.disconnect();
|
||||
setConnected(false);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
export * from './ledger';
|
||||
export * from './solong';
|
||||
export * from './phantom';
|
||||
export * from './sollet-extension';
|
||||
export * from './math';
|
||||
export * from './types';
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
import Wallet from '@project-serum/sol-wallet-adapter';
|
||||
import { notify } from '../../utils/notifications';
|
||||
|
||||
export function SolletExtensionAdapter(_, network) {
|
||||
const sollet = (window as any).sollet;
|
||||
if (sollet) {
|
||||
return new Wallet(sollet, network);
|
||||
}
|
||||
|
||||
return {
|
||||
on: () => {},
|
||||
connect: () => {
|
||||
notify({
|
||||
message: 'Sollet Extension Error',
|
||||
description: 'Please install the Sollet Extension for Chrome',
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1523,10 +1523,10 @@
|
|||
bn.js "^5.1.2"
|
||||
buffer-layout "^1.2.0"
|
||||
|
||||
"@project-serum/sol-wallet-adapter@^0.1.1":
|
||||
version "0.1.5"
|
||||
resolved "https://registry.yarnpkg.com/@project-serum/sol-wallet-adapter/-/sol-wallet-adapter-0.1.5.tgz#b8376addcb5e364f0621be639692d1c3b6d28622"
|
||||
integrity sha512-g2ugWI3mZu/+aXWA/hpDRly0lTwjfTeOQXUs5DNuZCbxXRdNXe1LLfjzzoZEMpURavqO725UwBkKxC5acvgoMw==
|
||||
"@project-serum/sol-wallet-adapter@^0.1.8":
|
||||
version "0.1.8"
|
||||
resolved "https://registry.yarnpkg.com/@project-serum/sol-wallet-adapter/-/sol-wallet-adapter-0.1.8.tgz#90c6c1da793d32ed4ba3c67c5702a5bc804ef197"
|
||||
integrity sha512-lKMgp7bsKpkrtBtIaEjtGuUMke0GUqFUL39Z7cjqsQpTVhkU5Ez4zHyjhXqAEORRGLFbwx/+H6HLpwppxpUDMQ==
|
||||
dependencies:
|
||||
bs58 "^4.0.1"
|
||||
eventemitter3 "^4.0.4"
|
||||
|
|
Loading…
Reference in New Issue