autumn-js
Version:
Autumn JS Library
118 lines (116 loc) • 3.06 kB
JavaScript
"use client";
import { jsx, jsxs } from "react/jsx-runtime";
import { AutumnContext } from "./AutumnContext";
import { useEffect, useState } from "react";
import { useCustomer } from "./hooks/useCustomer";
const useDialog = (component) => {
const [dialogFound, setDialogFound] = useState(false);
const [dialogProps, setDialogProps] = useState(null);
const [dialogOpen, setDialogOpen] = useState(false);
useEffect(() => {
if (!dialogOpen) {
setTimeout(() => {
setDialogProps(null);
}, 200);
}
}, [dialogOpen]);
const loadDialog = async () => {
if (component) {
setDialogFound(true);
} else {
setDialogFound(false);
}
};
useEffect(() => {
loadDialog();
}, []);
return [dialogFound, dialogProps, setDialogProps, dialogOpen, setDialogOpen];
};
const AutumnClientProvider = ({
children,
encryptedCustomerId,
customerData
}) => {
let [customer, setCustomer] = useState(null);
useCustomer({
encryptedCustomerId,
customerData,
errorOnNotFound: false
});
let [pricingTableProducts, setPricingTableProducts] = useState(null);
const [components, setComponents] = useState({});
const [entity, setEntity] = useState(null);
const [
prodChangeDialogFound,
prodChangeDialogProps,
setProdChangeDialogProps,
prodChangeDialogOpen,
setProdChangeDialogOpen
] = useDialog(components?.productChangeDialog);
const [
paywallFound,
paywallProps,
setPaywallProps,
paywallOpen,
setPaywallOpen
] = useDialog(components?.paywallDialog);
return /* @__PURE__ */ jsxs(
AutumnContext.Provider,
{
value: {
encryptedCustomerId,
customerData,
customer,
setCustomer,
prodChangeDialog: {
found: prodChangeDialogFound,
setProps: setProdChangeDialogProps,
setOpen: setProdChangeDialogOpen,
setComponent: (component) => {
setComponents({
...components,
productChangeDialog: component
});
}
},
paywallDialog: {
found: paywallFound,
setProps: setPaywallProps,
setOpen: setPaywallOpen,
setComponent: (component) => {
setComponents({
...components,
paywallDialog: component
});
}
},
pricingTableProducts,
setPricingTableProducts,
entity,
setEntity
},
children: [
components?.productChangeDialog && /* @__PURE__ */ jsx(
components.productChangeDialog,
{
open: prodChangeDialogOpen,
setOpen: setProdChangeDialogOpen,
...prodChangeDialogProps
}
),
components?.paywallDialog && /* @__PURE__ */ jsx(
components.paywallDialog,
{
open: paywallOpen,
setOpen: setPaywallOpen,
...paywallProps
}
),
children
]
}
);
};
export {
AutumnClientProvider
};