diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/index.tsx index fa68c249e5..ce82b5b83b 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/index.tsx @@ -12,7 +12,6 @@ import { pricesQuery, resumeSubscriptionMutation, SubscriptionPlan, - subscriptionQuery, SubscriptionRecurring, SubscriptionStatus, } from '@affine/graphql'; @@ -20,10 +19,14 @@ import { useMutation, useQuery } from '@affine/workspace/affine/gql'; import { ArrowRightSmallIcon } from '@blocksuite/icons'; import { Button, IconButton } from '@toeverything/components/button'; import { useSetAtom } from 'jotai'; -import { Suspense, useCallback, useEffect } from 'react'; +import { Suspense, useCallback } from 'react'; import { openSettingModalAtom } from '../../../../../atoms'; import { useCurrentLoginStatus } from '../../../../../hooks/affine/use-current-login-status'; +import { + type SubscriptionMutator, + useUserSubscription, +} from '../../../../../hooks/use-subscription'; import * as styles from './style.css'; export const BillingSettings = () => { @@ -56,14 +59,11 @@ export const BillingSettings = () => { }; const SubscriptionSettings = () => { - const { data: subscriptionQueryResult } = useQuery({ - query: subscriptionQuery, - }); + const [subscription, mutateSubscription] = useUserSubscription(); const { data: pricesQueryResult } = useQuery({ query: pricesQuery, }); - const subscription = subscriptionQueryResult.currentUser?.subscription; const plan = subscription?.plan ?? SubscriptionPlan.Free; const recurring = subscription?.recurring ?? SubscriptionRecurring.Monthly; @@ -123,7 +123,7 @@ const SubscriptionSettings = () => { subscription.end ).toLocaleDateString()}`} > - + ) : ( { subscription.end ).toLocaleDateString()}`} > - + )} @@ -166,20 +166,18 @@ const PlanAction = ({ plan }: { plan: string }) => { const PaymentMethodUpdater = () => { // TODO: open stripe customer portal - const { isMutating, trigger, data } = useMutation({ + const { isMutating, trigger } = useMutation({ mutation: createCustomerPortalMutation, }); const update = useCallback(() => { - trigger(); + trigger(null, { + onSuccess: data => { + window.open(data.createCustomerPortal, '_blank', 'noopener noreferrer'); + }, + }); }, [trigger]); - useEffect(() => { - if (data?.createCustomerPortal) { - window.open(data.createCustomerPortal, '_blank', 'noopener noreferrer'); - } - }, [data]); - return (