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