@wagmi/core
Version:
VanillaJS library for Ethereum
34 lines (29 loc) • 1.07 kB
text/typescript
import type { Config } from '../createConfig.js'
import { deepEqual } from '../utils/deepEqual.js'
import { type GetConnectionReturnType, getConnection } from './getConnection.js'
export type WatchConnectionParameters<config extends Config = Config> = {
onChange(
connection: GetConnectionReturnType<config>,
prevConnection: GetConnectionReturnType<config>,
): void
}
export type WatchConnectionReturnType = () => void
/** https://wagmi.sh/core/api/actions/watchConnection */
export function watchConnection<config extends Config>(
config: config,
parameters: WatchConnectionParameters<config>,
): WatchConnectionReturnType {
const { onChange } = parameters
return config.subscribe(() => getConnection(config), onChange, {
equalityFn(a, b) {
const { connector: aConnector, ...aRest } = a
const { connector: bConnector, ...bRest } = b
return (
deepEqual(aRest, bRest) &&
// check connector separately
aConnector?.id === bConnector?.id &&
aConnector?.uid === bConnector?.uid
)
},
})
}