UNPKG

@macalinao/react-quarry

Version:

React hooks for Quarry

42 lines 1.76 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { useKitWallet } from "@macalinao/grill"; import { useMergeMiner } from "../accounts/merge-miner.js"; import { useMergePool } from "../accounts/merge-pool.js"; import { MergeMinerContext } from "../contexts/merge-miner.js"; import { usePoolInfo } from "../contexts/pool-info.js"; import { useMergeMinerPda } from "../pdas/merge-miner.js"; import { useMergePoolPda } from "../pdas/merge-pool.js"; export const MergeMinerProvider = ({ children }) => { const poolInfo = usePoolInfo(); const { signer } = useKitWallet(); const mergePoolAddress = useMergePoolPda({ primaryMint: poolInfo.poolInfo.stakedToken.mint, }); // Get merge miner PDA if user is connected const mergeMinerAddress = useMergeMinerPda(signer?.address && mergePoolAddress ? { pool: mergePoolAddress, owner: signer.address, } : null); // Always call the hooks const { data: mergePoolAccount } = useMergePool({ address: mergePoolAddress, }); const { data: mergeMinerAccount } = useMergeMiner({ address: mergeMinerAddress, }); // TODO(igm): probably want to create a proper loading state here if (!(mergePoolAddress && mergePoolAccount)) { return _jsx("div", { children: "Loading..." }); } // Get balance from merge miner account, default to 0 const balance = mergeMinerAccount?.data.primaryBalance ?? 0n; return (_jsx(MergeMinerContext.Provider, { value: { mergePool: mergePoolAccount.data, mergePoolAddress, userAddress: signer?.address ?? null, balance, }, children: children })); }; //# sourceMappingURL=merge-miner-provider.js.map