moonstream/frontend/src/core/hooks/useSubscriptions.js

55 wiersze
1.4 KiB
JavaScript
Czysty Zwykły widok Historia

2021-07-13 11:35:46 +00:00
import { SubscriptionsService } from "../services";
import { useMutation } from "react-query";
import { useToast } from ".";
import { queryCacheProps } from "./hookCommon";
import useStripe from "./useStripe";
import { useQuery } from "react-query";
const useSubscriptions = (groupId) => {
const toast = useToast();
const stripe = useStripe();
const [manageSubscription, mangeSeatsStatus] = useMutation(
SubscriptionsService.manageSubscription(),
{
onError: (error) => toast(error, "error"),
onSuccess: (response) => {
const {
session_id: sessionId,
session_url: sessionUrl,
} = response.data;
if (sessionId) {
stripe.redirectToCheckout({ sessionId });
} else if (sessionUrl) {
window.location = sessionUrl;
}
},
}
);
const manageSubscriptionMutation = {
manageSubscription,
isLoading: mangeSeatsStatus.isLoading,
};
const getSubscriptions = async () => {
const response = await SubscriptionsService.getSubscriptions(groupId);
return response.data.subscriptions;
};
const subscriptionsCache = useQuery(
["subscriptions", groupId],
getSubscriptions,
{
...queryCacheProps,
onError: (error) => {
toast(error, "error");
},
}
);
return { manageSubscriptionMutation, subscriptionsCache };
};
export default useSubscriptions;