UNPKG

@bigmi/client

Version:

Reactive primitives for Bitcoin apps.

46 lines (45 loc) 1.43 kB
import { ConnectorAlreadyConnectedError } from "../errors/connectors.js"; //#region src/actions/connect.ts async function connect(config, parameters) { let connector; if (typeof parameters.connector === "function") connector = config._internal.connectors.setup(parameters.connector); else connector = parameters.connector; if (connector.uid === config.state.current) throw new ConnectorAlreadyConnectedError(); try { config.setState((x) => ({ ...x, status: "connecting" })); connector.emitter.emit("message", { type: "connecting" }); const { connector: _, ...rest } = parameters; const data = await connector.connect(rest); const accounts = data.accounts; connector.emitter.off("connect", config._internal.events.connect); connector.emitter.on("change", config._internal.events.change); connector.emitter.on("disconnect", config._internal.events.disconnect); await config.storage?.setItem("recentConnectorId", connector.id); config.setState((x) => ({ ...x, connections: new Map(x.connections).set(connector.uid, { accounts, chainId: data.chainId, connector }), current: connector.uid, status: "connected" })); return { accounts, chainId: data.chainId }; } catch (error) { config.setState((x) => ({ ...x, status: x.current ? "connected" : "disconnected" })); throw error; } } //#endregion export { connect }; //# sourceMappingURL=connect.js.map