UNPKG

autumn-js

Version:
151 lines (148 loc) 3.5 kB
"use client"; import { getLocalCheckResponse } from "./chunk-BWKG32GC.mjs"; import { useQueryClient } from "./chunk-FU6VEECB.mjs"; // src/react/hooks/internal/useCustomerActions.ts import { useCallback } from "react"; var redirectToUrl = ({ url, openInNewTab }) => { if (openInNewTab) { window.open(url, "_blank"); } else { window.location.href = url; } }; var useCustomerActions = ({ client, customer }) => { const queryClient = useQueryClient(); const attach = useCallback( async (params) => { const response = await client.attach({ ...params, successUrl: params.successUrl ?? window.location.href }); if (response.paymentUrl) { redirectToUrl({ url: response.paymentUrl, openInNewTab: params.openInNewTab }); } else { queryClient.invalidateQueries({ queryKey: ["autumn"] }); } return response; }, [client, queryClient] ); const previewAttach = useCallback( async (params) => { return client.previewAttach(params); }, [client] ); const updateSubscription = useCallback( async (params) => { const response = await client.updateSubscription(params); if (response.paymentUrl) { redirectToUrl({ url: response.paymentUrl, openInNewTab: params.openInNewTab }); } else { queryClient.invalidateQueries({ queryKey: ["autumn"] }); } return response; }, [client, queryClient] ); const previewUpdateSubscription = useCallback( async (params) => { return client.previewUpdateSubscription(params); }, [client] ); const check = useCallback( (params) => { return getLocalCheckResponse({ customer, params }); }, [customer] ); const openCustomerPortal = useCallback( async (params = {}) => { const response = await client.openCustomerPortal({ ...params, returnUrl: params.returnUrl ?? window.location.href }); redirectToUrl({ url: response.url, openInNewTab: params.openInNewTab }); return response; }, [client] ); const multiAttach = useCallback( async (params) => { const response = await client.multiAttach({ ...params, successUrl: params.successUrl ?? window.location.href }); if (response.paymentUrl) { redirectToUrl({ url: response.paymentUrl, openInNewTab: params.openInNewTab }); } else { queryClient.invalidateQueries({ queryKey: ["autumn"] }); } return response; }, [client, queryClient] ); const previewMultiAttach = useCallback( async (params) => { return client.previewMultiAttach(params); }, [client] ); const setupPayment = useCallback( async (params = {}) => { const response = await client.setupPayment({ ...params, successUrl: params.successUrl ?? window.location.href }); const redirectUrl = response.url; if (redirectUrl) { redirectToUrl({ url: redirectUrl, openInNewTab: params.openInNewTab }); } return response; }, [client] ); return { attach, previewAttach, updateSubscription, previewUpdateSubscription, multiAttach, previewMultiAttach, check, openCustomerPortal, setupPayment }; }; export { useCustomerActions };