Files
automatisch/packages/web/src/hooks/useSubscription.ee.js
2024-04-08 14:49:37 +02:00

56 lines
1.4 KiB
JavaScript

import { useQuery } from '@tanstack/react-query';
import { useLocation } from 'react-router-dom';
import { DateTime } from 'luxon';
import * as React from 'react';
import api from 'helpers/api';
function transform(subscription) {
const nextBillDate = subscription?.nextBillDate;
const nextBillDateTitleDateObject = DateTime.fromISO(nextBillDate);
const formattedNextBillDateTitle = nextBillDateTitleDateObject.isValid
? nextBillDateTitleDateObject.toFormat('LLL dd, yyyy')
: nextBillDate;
return {
...subscription,
nextBillDate: formattedNextBillDateTitle,
};
}
export default function useSubscription() {
const location = useLocation();
const state = location.state;
const checkoutCompleted = state?.checkoutCompleted;
const [isPolling, setIsPolling] = React.useState(false);
const { data } = useQuery({
queryKey: ['subscription'],
queryFn: async ({ signal }) => {
const { data } = await api.get(`/v1/users/me/subscription`, {
signal,
});
return data;
},
refetchInterval: isPolling ? 1000 : false,
});
const subscription = data?.data;
const hasSubscription = subscription?.status === 'active';
React.useEffect(
function pollDataUntilSubscriptionIsCreated() {
if (checkoutCompleted) {
setIsPolling(!hasSubscription);
}
},
[checkoutCompleted, hasSubscription],
);
return {
data: transform(subscription),
};
}