UNPKG

@renegade-fi/react

Version:
49 lines 1.69 kB
"use client"; import { hydrate } from "@renegade-fi/core"; import { createElement, useEffect, useRef, useState } from "react"; import * as RustUtils from "../renegade-utils/index.js"; import { WasmContext } from "./wasm.js"; export function Hydrate(parameters) { const { children, config, initialState, reconnectOnMount = true } = parameters; const [isInitialized, setIsInitialized] = useState(false); const { onMount } = hydrate(config, { initialState, reconnectOnMount, }); // Hydrate for non-SSR if (config && !config._internal.ssr) onMount(); useEffect(() => { RustUtils.default().then(() => { setIsInitialized(true); console.log("Backup effect initialized WASM"); }); }, []); // Hydrate for SSR const active = useRef(true); // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation> useEffect(() => { if (!config) return; config.utils .default() .then(() => { console.log("🚀 ~ WASM initialized"); setIsInitialized(true); if (!active.current) return; if (!config._internal.ssr) return; // Rehydrate after WASM is initialized to prevent race condition onMount(); }) .catch((error) => { console.error("❌ Failed to initialize Rust utils", error); }); return () => { active.current = false; }; }, []); return createElement(WasmContext.Provider, { value: { isInitialized } }, children); } //# sourceMappingURL=hydrate.js.map