@wagmi/vue
Version:
Vue Composables for Ethereum
36 lines (29 loc) • 1.06 kB
text/typescript
import {
type Config,
type GetChainsReturnType,
getChains,
type ResolvedRegister,
} from '@wagmi/core'
import { watchChains } from '@wagmi/core/internal'
import { onScopeDispose, type Ref, readonly, ref } from 'vue'
import type { ConfigParameter } from '../types/properties.js'
import { useConfig } from './useConfig.js'
export type UseChainsParameters<config extends Config = Config> =
ConfigParameter<config>
export type UseChainsReturnType<config extends Config = Config> = Ref<
GetChainsReturnType<config>
>
/** https://wagmi.sh/vue/api/composables/useChains */
export function useChains<config extends Config = ResolvedRegister['config']>(
parameters: UseChainsParameters<config> = {},
): UseChainsReturnType<config> {
const config = useConfig(parameters)
const chains = ref<GetChainsReturnType<config>>(getChains(config))
const unsubscribe = watchChains(config, {
onChange(data) {
chains.value = data as any
},
})
onScopeDispose(() => unsubscribe())
return readonly(chains) as UseChainsReturnType<config>
}