@bigmi/react
Version:
React primitives for Bitcoin apps.
45 lines (44 loc) • 1.51 kB
JavaScript
"use client";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
let react = require("react");
let _bigmi_client = require("@bigmi/client");
//#region src/hydrate.ts
function hydrate(config, parameters) {
const { initialState, reconnectOnMount } = parameters;
if (initialState && !config._internal.store.persist.hasHydrated()) config.setState({
...initialState,
chainId: config.chains.some((x) => x.id === initialState.chainId) ? initialState.chainId : config.chains[0].id,
connections: reconnectOnMount ? initialState.connections : /* @__PURE__ */ new Map(),
status: reconnectOnMount ? "reconnecting" : "disconnected"
});
return { async onMount() {
if (config._internal.ssr) await config._internal.store.persist.rehydrate();
if (reconnectOnMount) (0, _bigmi_client.reconnect)(config);
else if (config.storage) config.setState((x) => ({
...x,
connections: /* @__PURE__ */ new Map()
}));
} };
}
function Hydrate(parameters) {
const { children, config, initialState, reconnectOnMount = true } = parameters;
const { onMount } = hydrate(config, {
initialState,
reconnectOnMount
});
if (!config._internal.ssr) onMount();
const active = (0, react.useRef)(true);
(0, react.useEffect)(() => {
if (!active.current) return;
if (!config._internal.ssr) return;
onMount();
return () => {
active.current = false;
};
}, []);
return children;
}
//#endregion
exports.Hydrate = Hydrate;
exports.hydrate = hydrate;
//# sourceMappingURL=hydrate.js.map