@bigmi/client
Version:
Reactive primitives for Bitcoin apps.
42 lines (41 loc) • 1.27 kB
JavaScript
//#region src/actions/disconnect.ts
async function disconnect(config, parameters = {}) {
let connector;
if (parameters.connector) connector = parameters.connector;
else {
const { connections, current } = config.state;
connector = connections.get(current)?.connector;
}
const connections = config.state.connections;
if (connector) {
await connector.disconnect();
connector.emitter.off("change", config._internal.events.change);
connector.emitter.off("disconnect", config._internal.events.disconnect);
connector.emitter.on("connect", config._internal.events.connect);
connections.delete(connector.uid);
}
config.setState((x) => {
if (connections.size === 0) return {
...x,
connections: /* @__PURE__ */ new Map(),
current: null,
status: "disconnected"
};
const nextConnection = connections.values().next().value;
return {
...x,
connections: new Map(connections),
current: nextConnection.connector.uid
};
});
{
const current = config.state.current;
if (!current) return;
const connector = config.state.connections.get(current)?.connector;
if (!connector) return;
await config.storage?.setItem("recentConnectorId", connector.id);
}
}
//#endregion
export { disconnect };
//# sourceMappingURL=disconnect.js.map