fix wallet provider
This commit is contained in:
@@ -10,9 +10,9 @@
|
||||
"@coral-xyz/anchor": "^0.32.1",
|
||||
"@descro/sdk": "workspace:*",
|
||||
"@solana/wallet-adapter-base": "^0.9.27",
|
||||
"@solana/wallet-adapter-phantom": "^0.9.29",
|
||||
"@solana/wallet-adapter-react": "^0.15.39",
|
||||
"@solana/wallet-adapter-react-ui": "^0.9.39",
|
||||
"@solana/wallet-adapter-wallets": "^0.19.38",
|
||||
"@solana/web3.js": "^1.98.4",
|
||||
"@tamagui/config": "^2.0.0-rc.42",
|
||||
"@tamagui/next-theme": "^2.0.0-rc.42",
|
||||
|
||||
@@ -1,43 +1,37 @@
|
||||
'use client'
|
||||
|
||||
import React, { useMemo, useState } from 'react'
|
||||
import React, { useCallback, useMemo, useState } from 'react'
|
||||
import { ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react'
|
||||
import { WalletAdapterNetwork, type WalletError } from '@solana/wallet-adapter-base'
|
||||
import { WalletModalProvider } from '@solana/wallet-adapter-react-ui'
|
||||
import { PhantomWalletAdapter } from '@solana/wallet-adapter-phantom'
|
||||
import { clusterApiUrl } from '@solana/web3.js'
|
||||
|
||||
export type Network = 'devnet' | 'localnet'
|
||||
|
||||
interface NetworkContextValue {
|
||||
network: Network
|
||||
setNetwork: (n: Network) => void
|
||||
endpoint: string
|
||||
network: WalletAdapterNetwork
|
||||
setNetwork: (n: WalletAdapterNetwork) => void
|
||||
}
|
||||
|
||||
export const NetworkContext = React.createContext<NetworkContextValue>({
|
||||
network: 'devnet',
|
||||
network: WalletAdapterNetwork.Devnet,
|
||||
setNetwork: () => undefined,
|
||||
endpoint: 'https://api.devnet.solana.com',
|
||||
})
|
||||
|
||||
export function getEndpoint(network: Network): string {
|
||||
if (network === 'localnet') return 'http://localhost:8899'
|
||||
return 'https://api.devnet.solana.com'
|
||||
}
|
||||
|
||||
export function WalletProviders({ children }: { children: React.ReactNode }) {
|
||||
const [network, setNetwork] = useState<Network>('devnet')
|
||||
const endpoint = getEndpoint(network)
|
||||
const [network, setNetwork] = useState<WalletAdapterNetwork>(WalletAdapterNetwork.Devnet)
|
||||
|
||||
const wallets = useMemo(
|
||||
() => [new PhantomWalletAdapter()],
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
[network]
|
||||
)
|
||||
// You can also provide a custom RPC endpoint
|
||||
const endpoint = useMemo(() => clusterApiUrl(network), [network]);
|
||||
|
||||
const onError = useCallback((error: WalletError) => {
|
||||
console.warn('[wallet]', error.name, error.message, error.error)
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<NetworkContext.Provider value={{ network, setNetwork, endpoint }}>
|
||||
<NetworkContext.Provider value={{ network, setNetwork }}>
|
||||
<ConnectionProvider endpoint={endpoint}>
|
||||
<WalletProvider wallets={wallets} autoConnect>
|
||||
<WalletProvider wallets={[]} autoConnect onError={onError}>
|
||||
<WalletModalProvider>{children}</WalletModalProvider>
|
||||
</WalletProvider>
|
||||
</ConnectionProvider>
|
||||
|
||||
Reference in New Issue
Block a user