dino_landing_page/app/components/WalletProvider.tsx
2025-08-17 22:46:33 +05:30

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>
);
}