63 lines
1.8 KiB
TypeScript
63 lines
1.8 KiB
TypeScript
'use client';
|
|
|
|
import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
|
|
import { ConnectionProvider, WalletProvider as SolanaWalletProvider } from '@solana/wallet-adapter-react';
|
|
import { WalletModalProvider } from '@solana/wallet-adapter-react-ui';
|
|
import {
|
|
PhantomWalletAdapter,
|
|
SolflareWalletAdapter,
|
|
AlphaWalletAdapter,
|
|
BitKeepWalletAdapter,
|
|
BitpieWalletAdapter,
|
|
CloverWalletAdapter
|
|
} from '@solana/wallet-adapter-wallets';
|
|
import { clusterApiUrl } from '@solana/web3.js';
|
|
import { useMemo } from 'react';
|
|
|
|
// Import wallet adapter CSS
|
|
import '@solana/wallet-adapter-react-ui/styles.css';
|
|
|
|
interface WalletProviderProps {
|
|
children: React.ReactNode;
|
|
}
|
|
|
|
export default function WalletProvider({ children }: WalletProviderProps) {
|
|
// The network can be set to 'devnet', 'testnet', or 'mainnet-beta'.
|
|
const network = WalletAdapterNetwork.Devnet;
|
|
|
|
// You can also provide a custom RPC endpoint.
|
|
const endpoint = useMemo(() => clusterApiUrl(network), [network]);
|
|
|
|
const wallets = useMemo(
|
|
() => [
|
|
new PhantomWalletAdapter(),
|
|
new SolflareWalletAdapter(),
|
|
new AlphaWalletAdapter(),
|
|
new BitKeepWalletAdapter(),
|
|
new BitpieWalletAdapter(),
|
|
new CloverWalletAdapter(),
|
|
],
|
|
[]
|
|
);
|
|
|
|
return (
|
|
<ConnectionProvider endpoint={endpoint}>
|
|
<SolanaWalletProvider
|
|
wallets={wallets}
|
|
autoConnect
|
|
onError={(error) => {
|
|
console.error('Wallet adapter error:', error);
|
|
// Handle mobile-specific wallet errors
|
|
if (error.message.includes('signature verification failed')) {
|
|
console.warn('Mobile wallet signature verification issue detected');
|
|
}
|
|
}}
|
|
>
|
|
<WalletModalProvider>
|
|
{children}
|
|
</WalletModalProvider>
|
|
</SolanaWalletProvider>
|
|
</ConnectionProvider>
|
|
);
|
|
}
|