@macalinao/react-quarry
Version:
React hooks for Quarry
42 lines • 1.76 kB
JavaScript
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