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

96 wiersze
2.5 KiB
JavaScript

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 = () => {
const toast = useToast();
const stripe = useStripe();
// const manageSubscription = 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 getSubscriptions = async () => {
const response = await SubscriptionsService.getSubscriptions();
return response.data;
};
const subscriptionsCache = useQuery(["subscriptions"], getSubscriptions, {
...queryCacheProps,
onError: (error) => {
toast(error, "error");
},
});
const getSubscriptionTypes = async () => {
const response = await SubscriptionsService.getTypes();
return response.data;
};
const typesCache = useQuery(["subscription_types"], getSubscriptionTypes, {
...queryCacheProps,
onError: (error) => {
toast(error, "error");
},
});
const createSubscription = useMutation(
SubscriptionsService.createSubscription(),
{
onError: (error) => toast(error, "error"),
onSuccess: (response) => {
subscriptionsCache.refetch();
const { session_id: sessionId, session_url: sessionUrl } =
response.data;
if (sessionId) {
stripe.redirectToCheckout({ sessionId });
} else if (sessionUrl) {
window.location = sessionUrl;
}
},
}
);
const changeNote = useMutation(SubscriptionsService.modifySubscription(), {
onError: (error) => toast(error, "error"),
onSuccess: (response) => {
subscriptionsCache.refetch();
},
});
const deleteSubscription = useMutation(
SubscriptionsService.deleteSubscription(),
{
onError: (error) => toast(error, "error"),
onSuccess: (response) => {
subscriptionsCache.refetch();
},
}
);
return {
createSubscription,
subscriptionsCache,
typesCache,
changeNote,
deleteSubscription,
};
};
export default useSubscriptions;