Merge pull request #1719 from automatisch/AUT-831

refactor: rewrite useSubscription with RQ
This commit is contained in:
Ali BARIN
2024-03-15 13:23:06 +01:00
committed by GitHub
7 changed files with 46 additions and 57 deletions

View File

@@ -1,10 +1,14 @@
import * as React from 'react';
import Alert from '@mui/material/Alert';
import Typography from '@mui/material/Typography';
import useSubscriptionStatus from 'hooks/useSubscriptionStatus.ee';
import useSubscription from 'hooks/useSubscription.ee';
export default function SubscriptionCancelledAlert() {
const subscriptionStatus = useSubscriptionStatus();
if (!subscriptionStatus) return <React.Fragment />;
const subscription = useSubscription();
if (!subscription) return <React.Fragment />;
return (
<Alert
severity="warning"
@@ -14,7 +18,7 @@ export default function SubscriptionCancelledAlert() {
}}
>
<Typography variant="subtitle2" sx={{ lineHeight: 1.5 }}>
{subscriptionStatus.message}
{subscription.message}
</Typography>
</Alert>
);

View File

@@ -1,8 +0,0 @@
import { gql } from '@apollo/client';
export const GET_SUBSCRIPTION_STATUS = gql`
query GetSubscriptionStatus {
getSubscriptionStatus {
cancellationEffectiveDate
}
}
`;

View File

@@ -0,0 +1,38 @@
import { useQuery } from '@tanstack/react-query';
import { DateTime } from 'luxon';
import useFormatMessage from './useFormatMessage';
import api from 'helpers/api';
export default function useSubscription() {
const formatMessage = useFormatMessage();
const { data, isLoading: isSubscriptionLoading } = useQuery({
queryKey: ['subscription'],
queryFn: async ({ signal }) => {
const { data } = await api.get(`/v1/users/me/subscription`, {
signal,
});
return data;
},
});
const subscription = data?.data;
const cancellationEffectiveDate = subscription?.cancellationEffectiveDate;
const hasCancelled = !!cancellationEffectiveDate;
if (isSubscriptionLoading || !hasCancelled) return null;
const cancellationEffectiveDateObject = DateTime.fromISO(
cancellationEffectiveDate,
);
return {
message: formatMessage('subscriptionCancelledAlert.text', {
date: cancellationEffectiveDateObject.toFormat('DDD'),
}),
cancellationEffectiveDate: cancellationEffectiveDateObject,
};
}

View File

@@ -1,21 +0,0 @@
import { useQuery } from '@apollo/client';
import { DateTime } from 'luxon';
import { GET_SUBSCRIPTION_STATUS } from 'graphql/queries/get-subscription-status.ee';
import useFormatMessage from './useFormatMessage';
export default function useSubscriptionStatus() {
const formatMessage = useFormatMessage();
const { data, loading } = useQuery(GET_SUBSCRIPTION_STATUS);
const cancellationEffectiveDate =
data?.getSubscriptionStatus?.cancellationEffectiveDate;
const hasCancelled = !!cancellationEffectiveDate;
if (loading || !hasCancelled) return null;
const cancellationEffectiveDateObject = DateTime.fromMillis(
Number(cancellationEffectiveDate),
).startOf('day');
return {
message: formatMessage('subscriptionCancelledAlert.text', {
date: cancellationEffectiveDateObject.toFormat('DDD'),
}),
cancellationEffectiveDate: cancellationEffectiveDateObject,
};
}