@daimo/pay
Version:
Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.
36 lines (33 loc) • 1.14 kB
JavaScript
import { jsx } from 'react/jsx-runtime';
import { createContext, useState, useMemo, useLayoutEffect } from 'react';
import { attachPaymentEffectHandlers } from '../payment/paymentEffects.js';
import { createPaymentStore } from '../payment/paymentStore.js';
import { createTrpcClient } from '../utils/trpc.js';
const PaymentContext = createContext(null);
function PaymentProvider({
children,
payApiUrl,
log = console.log,
debugMode = false
}) {
const [sessionId] = useState(() => crypto.randomUUID().replaceAll("-", ""));
const trpc = useMemo(() => {
return createTrpcClient(payApiUrl, sessionId);
}, [payApiUrl, sessionId]);
const store = useMemo(() => {
return createPaymentStore();
}, []);
useLayoutEffect(() => {
const unsubscribe = attachPaymentEffectHandlers(
store,
trpc,
log,
debugMode
);
log("[EFFECT] subscribed to payment effects");
return unsubscribe;
}, [store, trpc, log, debugMode]);
return /* @__PURE__ */ jsx(PaymentContext.Provider, { value: store, children });
}
export { PaymentContext, PaymentProvider };
//# sourceMappingURL=PaymentProvider.js.map