@bigmi/react
Version:
React primitives for Bitcoin apps.
43 lines (42 loc) • 1.38 kB
JavaScript
"use client";
import { useEffect, useRef } from "react";
import { reconnect } from "@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) 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 = useRef(true);
useEffect(() => {
if (!active.current) return;
if (!config._internal.ssr) return;
onMount();
return () => {
active.current = false;
};
}, []);
return children;
}
//#endregion
export { Hydrate, hydrate };
//# sourceMappingURL=hydrate.js.map