From 2696f5b735db370e0efa10d60a8f2993d04b9510 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Tue, 7 Sep 2021 15:11:27 -0300 Subject: [PATCH] refactor: merge active and cancelled components into one --- .../subscription/ActiveSubscription.tsx | 49 ----------- .../subscription/CancelledSubscription.tsx | 50 ------------ .../account/subscription/Subscription.tsx | 39 +++------ .../subscription/SubscriptionInformation.tsx | 81 +++++++++++++++++++ .../subscription/subscription_state.tsx | 1 - 5 files changed, 94 insertions(+), 126 deletions(-) delete mode 100644 app/assets/javascripts/preferences/panes/account/subscription/ActiveSubscription.tsx delete mode 100644 app/assets/javascripts/preferences/panes/account/subscription/CancelledSubscription.tsx create mode 100644 app/assets/javascripts/preferences/panes/account/subscription/SubscriptionInformation.tsx diff --git a/app/assets/javascripts/preferences/panes/account/subscription/ActiveSubscription.tsx b/app/assets/javascripts/preferences/panes/account/subscription/ActiveSubscription.tsx deleted file mode 100644 index eb5d984ad..000000000 --- a/app/assets/javascripts/preferences/panes/account/subscription/ActiveSubscription.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { observer } from 'mobx-react-lite'; -import { SubscriptionState } from './subscription_state'; -import { Text } from '@/preferences/components'; -import { Button } from '@/components/Button'; - -type Props = { - subscriptionState: SubscriptionState; -}; - -export const ActiveSubscription = observer( - ({ subscriptionState }: Props) => { - const { userSubscription, userSubscriptionName } = subscriptionState; - return ( - <> - - Your{' '} - - Standard Notes{userSubscriptionName ? " " : ""}{userSubscriptionName} - {' '} - subscription will be{' '} - - renewed on {new Date(userSubscription!.endsAt).toLocaleString()} - - . - -
-
- - ); - } -); diff --git a/app/assets/javascripts/preferences/panes/account/subscription/CancelledSubscription.tsx b/app/assets/javascripts/preferences/panes/account/subscription/CancelledSubscription.tsx deleted file mode 100644 index d3742e65c..000000000 --- a/app/assets/javascripts/preferences/panes/account/subscription/CancelledSubscription.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { observer } from 'mobx-react-lite'; -import { SubscriptionState } from './subscription_state'; -import { Text } from '@/preferences/components'; -import { Button } from '@/components/Button'; - -type Props = { - subscriptionState: SubscriptionState; -}; - -export const CancelledSubscription = observer( - ({ subscriptionState }: Props) => { - const { userSubscription, userSubscriptionName } = subscriptionState; - return ( - <> - - Your{' '} - - Standard Notes{userSubscriptionName ? " " : ""}{userSubscriptionName} - {' '} - subscription has been{' '} - - canceled but will remain valid until{' '} - {new Date(userSubscription!.endsAt).toLocaleString()} - - . You may resubscribe below if you wish. - -
-
- - ); - } -); diff --git a/app/assets/javascripts/preferences/panes/account/subscription/Subscription.tsx b/app/assets/javascripts/preferences/panes/account/subscription/Subscription.tsx index df5b3f9fc..33dff200b 100644 --- a/app/assets/javascripts/preferences/panes/account/subscription/Subscription.tsx +++ b/app/assets/javascripts/preferences/panes/account/subscription/Subscription.tsx @@ -3,7 +3,6 @@ import { PreferencesSegment, Title, } from '@/preferences/components'; -import { observer } from '@node_modules/mobx-react-lite'; import { WebApplication } from '@/ui_models/application'; import { useCallback, useEffect, useState } from 'preact/hooks'; import { @@ -11,41 +10,25 @@ import { GetSubscriptionsResponse, } from '@standardnotes/snjs/dist/@types/services/api/responses'; import { SubscriptionState } from './subscription_state'; -import { CancelledSubscription } from './CancelledSubscription'; -import { ActiveSubscription } from './ActiveSubscription'; +import { SubscriptionInformation } from './SubscriptionInformation'; import { NoSubscription } from './NoSubscription'; import { Text } from '@/preferences/components'; -import { FunctionalComponent } from 'preact'; +import { observer } from 'mobx-react-lite'; type Props = { application: WebApplication; subscriptionState: SubscriptionState; }; -type SubscriptionInformationProps = { - subscriptionState: SubscriptionState; -}; - -const SubscriptionInformation = observer(({ +export const Subscription = observer(({ + application, subscriptionState, -}: SubscriptionInformationProps) => { - const now = new Date().getTime(); - const { userSubscription } = subscriptionState; - - if (userSubscription && userSubscription.endsAt > now) { - return userSubscription.cancelled ? ( - - ) : ( - - ); - } - return ; -}); - -export const Subscription: FunctionalComponent = ({ application, subscriptionState }) => { +}: Props) => { const [loading, setLoading] = useState(true); const [error, setError] = useState(false); + const { userSubscription } = subscriptionState; + const getSubscriptions = useCallback(async () => { try { const result = await application.getSubscriptions(); @@ -87,6 +70,8 @@ export const Subscription: FunctionalComponent = ({ application, subscrip getSubscriptionInfo(); }, [getSubscriptionInfo]); + const now = new Date().getTime(); + return ( @@ -97,12 +82,14 @@ export const Subscription: FunctionalComponent = ({ application, subscrip No subscription information available. ) : loading ? ( Loading subscription information... - ) : ( + ) : userSubscription && userSubscription.endsAt > now ? ( + ) : ( + )} ); -}; +}); diff --git a/app/assets/javascripts/preferences/panes/account/subscription/SubscriptionInformation.tsx b/app/assets/javascripts/preferences/panes/account/subscription/SubscriptionInformation.tsx new file mode 100644 index 000000000..eb97147a5 --- /dev/null +++ b/app/assets/javascripts/preferences/panes/account/subscription/SubscriptionInformation.tsx @@ -0,0 +1,81 @@ +import { observer } from 'mobx-react-lite'; +import { SubscriptionState } from './subscription_state'; +import { Text } from '@/preferences/components'; +import { Button } from '@/components/Button'; + +type Props = { + subscriptionState: SubscriptionState; +}; + +const StatusText = observer(({ subscriptionState }: Props) => { + const { userSubscription, userSubscriptionName } = subscriptionState; + + return userSubscription!.cancelled ? ( + + Your{' '} + + Standard Notes{userSubscriptionName ? ' ' : ''} + {userSubscriptionName} + {' '} + subscription has been{' '} + + canceled but will remain valid until{' '} + {new Date(userSubscription!.endsAt).toLocaleString()} + + . You may resubscribe below if you wish. + + ) : ( + + Your{' '} + + Standard Notes{userSubscriptionName ? ' ' : ''} + {userSubscriptionName} + {' '} + subscription will be{' '} + + renewed on {new Date(userSubscription!.endsAt).toLocaleString()} + + . + + ); +}); + +const PrimaryButton = observer(({ subscriptionState }: Props) => { + const { userSubscription } = subscriptionState; + + return ( +