@renegade-fi/react
Version:
React library for Renegade
49 lines • 1.69 kB
JavaScript
"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