autumn-js
Version:
Autumn JS Library
151 lines (148 loc) • 3.5 kB
JavaScript
"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;
},
[]
);
const previewAttach = useCallback(
async (params) => {
return client.previewAttach(params);
},
[]
);
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;
},
[]
);
const previewUpdateSubscription = useCallback(
async (params) => {
return client.previewUpdateSubscription(params);
},
[]
);
const check = useCallback(
(params) => {
return getLocalCheckResponse({
customer,
params
});
},
[]
);
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;
},
[]
);
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;
},
[]
);
const previewMultiAttach = useCallback(
async (params) => {
return client.previewMultiAttach(params);
},
[]
);
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;
},
[]
);
return {
attach,
previewAttach,
updateSubscription,
previewUpdateSubscription,
multiAttach,
previewMultiAttach,
check,
openCustomerPortal,
setupPayment
};
};
export {
useCustomerActions
};