wallet-connect-web-examples/dapps/web3modal/svelte/src/lib/web3modal.ts
Glitch d9c17b0dd9
Feat/add svelte (#447)
* add sveltekit example

* fix deps

* remove warning

* Update README.md
2024-02-02 16:19:01 -03:00

84 lines
1.6 KiB
TypeScript

import { defaultWagmiConfig, createWeb3Modal } from '@web3modal/wagmi'
import { getAccount, getChainId, reconnect, watchAccount, watchChainId } from '@wagmi/core'
import { readable, writable } from 'svelte/store'
import {
arbitrum,
aurora,
avalanche,
base,
bsc,
celo,
gnosis,
mainnet,
optimism,
polygon,
zkSync,
zora,
goerli,
ronin,
saigon,
} from 'viem/chains'
import type { ExtendedProvider } from './types'
export const projectId = import.meta.env.VITE_PROJECT_ID
const metadata = {
name: 'Web3Modal',
description: 'Web3Modal Example',
url: 'https://web3modal.com',
icons: ['https://avatars.githubusercontent.com/u/37784886'],
}
export const chains = [
arbitrum,
aurora,
avalanche,
base,
bsc,
celo,
gnosis,
mainnet,
optimism,
polygon,
zkSync,
zora,
goerli,
ronin,
saigon,
] as const
export const wagmiConfig = defaultWagmiConfig({
chains,
projectId,
metadata,
enableCoinbase: false,
enableInjected: false,
})
reconnect(wagmiConfig)
createWeb3Modal({
wagmiConfig,
projectId,
themeMode: 'dark',
featuredWalletIds: [],
enableAnalytics: true
})
export const chainId = readable(getChainId(wagmiConfig), (set) => watchChainId(wagmiConfig, { onChange: set }))
export const account = readable(getAccount(wagmiConfig), (set) => watchAccount(wagmiConfig, { onChange: set }))
export const provider = readable<ExtendedProvider | undefined>(
undefined,
(set) =>
watchAccount(wagmiConfig, {
onChange: async (account) => {
if (!account.connector) return set(undefined)
set(await account.connector?.getProvider())
}
}),
)
export const supported_chains = writable<string[]>([])