import { getConnection, watchConnection, type Config, type GetConnectionReturnType, type ResolvedRegister, } from "@wagmi/core"; import { createEffect, createSignal, onCleanup, type Accessor } from "solid-js"; import type { ConfigParameter } from "../types/index.js"; import { useConfig } from "./useConfig.js"; export type SolidConnectionParameters = ConfigParameter; export type UseConnectionParameters = Accessor< SolidConnectionParameters >; export type SolidConnectionReturnType = GetConnectionReturnType; export type UseConnectionReturnType = Accessor< SolidConnectionReturnType >; /** https://wagmi.sh/solid/api/primitives/useConnection */ export function useConnection< config extends Config = ResolvedRegister["config"] >( parameters: UseConnectionParameters = () => ({}) ): UseConnectionReturnType { const config = useConfig(parameters); const [connection, setConnection] = createSignal(getConnection(config())); createEffect(() => { const _config = config(); setConnection(() => getConnection(_config)); const unsubscribe = watchConnection(_config, { onChange(data) { setConnection(() => data); }, }); onCleanup(() => unsubscribe()); }); return connection; }