@edx/frontend-app-subscription-manage 1.18.2 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ActiveSubscription/ActiveSubscription.js +4 -4
- package/dist/components/ActiveSubscription/ActiveSubscription.js.map +1 -1
- package/dist/components/BecomeSubscriber/BecomeSubscriber.js +3 -3
- package/dist/components/BecomeSubscriber/BecomeSubscriber.js.map +1 -1
- package/dist/components/CancelConfirmation/CancelConfirmation.js +6 -6
- package/dist/components/CancelConfirmation/CancelConfirmation.js.map +1 -1
- package/dist/components/CancelSuccess/CancelSuccess.js +3 -3
- package/dist/components/CancelSuccess/CancelSuccess.js.map +1 -1
- package/dist/components/CanceledSubscription/CanceledSubscription.js +6 -6
- package/dist/components/CanceledSubscription/CanceledSubscription.js.map +1 -1
- package/dist/components/EnrolledCoursesList/EnrolledCoursesList.js +2 -2
- package/dist/components/EnrolledCoursesList/EnrolledCoursesList.js.map +1 -1
- package/dist/components/HelpFooter/HelpFooter.js +1 -1
- package/dist/components/HelpFooter/HelpFooter.js.map +1 -1
- package/dist/components/OrderHistory/OrderHistoryCard.d.ts +11 -0
- package/dist/components/OrderHistory/OrderHistoryCard.js +6 -0
- package/dist/components/OrderHistory/OrderHistoryCard.js.map +1 -0
- package/dist/components/OrderHistory/OrderHistoryDetails.d.ts +2 -0
- package/dist/components/OrderHistory/OrderHistoryDetails.js +120 -0
- package/dist/components/OrderHistory/OrderHistoryDetails.js.map +1 -0
- package/dist/components/OrderHistory/OrderList.d.ts +3 -0
- package/dist/components/OrderHistory/OrderList.js +13 -0
- package/dist/components/OrderHistory/OrderList.js.map +1 -0
- package/dist/components/OrderHistory/OrderPurchases.d.ts +4 -0
- package/dist/components/OrderHistory/OrderPurchases.js +44 -0
- package/dist/components/OrderHistory/OrderPurchases.js.map +1 -0
- package/dist/components/OrderHistory/ProgramItemsTable.d.ts +7 -0
- package/dist/components/OrderHistory/ProgramItemsTable.js +49 -0
- package/dist/components/OrderHistory/ProgramItemsTable.js.map +1 -0
- package/dist/components/OrderHistory/data/receiptRows.d.ts +17 -0
- package/dist/components/OrderHistory/data/receiptRows.js +16 -0
- package/dist/components/OrderHistory/data/receiptRows.js.map +1 -0
- package/dist/components/OrderHistory/messages.d.ts +118 -0
- package/dist/components/OrderHistory/messages.js +120 -0
- package/dist/components/OrderHistory/messages.js.map +1 -0
- package/dist/components/OrderHistoryHeader/OrderHistoryHeader.js +1 -1
- package/dist/components/OrderHistoryHeader/OrderHistoryHeader.js.map +1 -1
- package/dist/components/PaymentHistory/PaymentHistory.js +5 -5
- package/dist/components/PaymentHistory/PaymentHistory.js.map +1 -1
- package/dist/components/RefundNotice/RefundNotice.d.ts +3 -0
- package/dist/components/RefundNotice/RefundNotice.js +15 -0
- package/dist/components/RefundNotice/RefundNotice.js.map +1 -0
- package/dist/components/RefundNotice/messages.d.ts +18 -0
- package/dist/components/RefundNotice/messages.js +20 -0
- package/dist/components/RefundNotice/messages.js.map +1 -0
- package/dist/components/RenewSubscriptionModal/RenewSubscriptionModal.js +10 -10
- package/dist/components/RenewSubscriptionModal/RenewSubscriptionModal.js.map +1 -1
- package/dist/components/ResubscribeCard/ResubscribeCard.js +5 -5
- package/dist/components/ResubscribeCard/ResubscribeCard.js.map +1 -1
- package/dist/components/UpdatePaymentMethodModal/UpdatePaymentMethodModal.js +12 -12
- package/dist/components/UpdatePaymentMethodModal/UpdatePaymentMethodModal.js.map +1 -1
- package/dist/components/messages.d.ts +89 -99
- package/dist/components/messages.js +182 -192
- package/dist/components/messages.js.map +1 -1
- package/dist/constants.d.ts +7 -1
- package/dist/constants.js +7 -1
- package/dist/constants.js.map +1 -1
- package/dist/data/hooks/keys.d.ts +5 -0
- package/dist/data/hooks/keys.js +5 -0
- package/dist/data/hooks/keys.js.map +1 -1
- package/dist/data/hooks/useOrderHistoryQueries.d.ts +11 -0
- package/dist/data/hooks/useOrderHistoryQueries.js +30 -0
- package/dist/data/hooks/useOrderHistoryQueries.js.map +1 -0
- package/dist/data/services/orderHistory/orderHistory.d.ts +7 -0
- package/dist/data/services/orderHistory/orderHistory.js +40 -0
- package/dist/data/services/orderHistory/orderHistory.js.map +1 -0
- package/dist/{manageSubscriptionPage → orderHistory}/CancelSubscriptionPage.js +4 -4
- package/dist/orderHistory/CancelSubscriptionPage.js.map +1 -0
- package/dist/{manageSubscriptionPage → orderHistory}/CancelSuccessPage.js +2 -2
- package/dist/orderHistory/CancelSuccessPage.js.map +1 -0
- package/dist/orderHistory/OrderHistoryPage.d.ts +3 -0
- package/dist/orderHistory/OrderHistoryPage.js +127 -0
- package/dist/orderHistory/OrderHistoryPage.js.map +1 -0
- package/dist/routes.d.ts +23 -2
- package/dist/routes.js +44 -19
- package/dist/routes.js.map +1 -1
- package/dist/style.scss +1 -1
- package/dist/styles/components/{manageSubscription.scss → orderHistory.scss} +60 -24
- package/dist/types.d.ts +55 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/currency.d.ts +6 -0
- package/dist/utils/currency.js +6 -0
- package/dist/utils/currency.js.map +1 -0
- package/dist/utils/queries.d.ts +6 -0
- package/dist/utils/queries.js +12 -0
- package/dist/utils/queries.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/SubscriptionTabs/SubscriptionTabs.d.ts +0 -8
- package/dist/components/SubscriptionTabs/SubscriptionTabs.js +0 -15
- package/dist/components/SubscriptionTabs/SubscriptionTabs.js.map +0 -1
- package/dist/manageSubscriptionPage/CancelSubscriptionPage.js.map +0 -1
- package/dist/manageSubscriptionPage/CancelSuccessPage.js.map +0 -1
- package/dist/manageSubscriptionPage/ManageSubscriptionPage.d.ts +0 -3
- package/dist/manageSubscriptionPage/ManageSubscriptionPage.js +0 -88
- package/dist/manageSubscriptionPage/ManageSubscriptionPage.js.map +0 -1
- /package/dist/{manageSubscriptionPage → orderHistory}/CancelSubscriptionPage.d.ts +0 -0
- /package/dist/{manageSubscriptionPage → orderHistory}/CancelSuccessPage.d.ts +0 -0
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useState } from 'react';
|
|
3
|
-
import { Alert, Container, Spinner, } from '@openedx/paragon';
|
|
4
|
-
import { useIntl } from '@openedx/frontend-base';
|
|
5
|
-
import ActiveSubscription from '../components/ActiveSubscription/ActiveSubscription';
|
|
6
|
-
import BecomeSubscriber from '../components/BecomeSubscriber/BecomeSubscriber';
|
|
7
|
-
import CanceledSubscription, { RenewBanner, } from '../components/CanceledSubscription/CanceledSubscription';
|
|
8
|
-
import HelpFooter from '../components/HelpFooter/HelpFooter';
|
|
9
|
-
import OrderHistoryHeader from '../components/OrderHistoryHeader/OrderHistoryHeader';
|
|
10
|
-
import PaymentHistory from '../components/PaymentHistory/PaymentHistory';
|
|
11
|
-
import RenewSubscriptionModal from '../components/RenewSubscriptionModal/RenewSubscriptionModal';
|
|
12
|
-
import ResubscribeCard from '../components/ResubscribeCard/ResubscribeCard';
|
|
13
|
-
import SubscriptionTabs from '../components/SubscriptionTabs/SubscriptionTabs';
|
|
14
|
-
import messages from '../components/messages';
|
|
15
|
-
import { useBillingPlansQuery, useIsSubscriberQuery, usePaymentHistoryQuery, useReactivateSubscriptionMutation, useViaxClient, useViaxSession, } from '../data/hooks/useManageQueries';
|
|
16
|
-
import { getPaymentHistorySubscriptionIds } from '../data/services/subscription/getPaymentHistory';
|
|
17
|
-
import { getPlanPrice } from '../utils/billingDetails';
|
|
18
|
-
import { formatDisplayDate } from '../utils/formatDate';
|
|
19
|
-
import { resolvePlanLabel, resolveSubscriptionView, } from '../utils/subscriptionView';
|
|
20
|
-
const ManageSubscriptionPage = () => {
|
|
21
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
22
|
-
const { formatMessage } = useIntl();
|
|
23
|
-
const [activeTab, setActiveTab] = useState('subscription');
|
|
24
|
-
const [isRenewModalOpen, setIsRenewModalOpen] = useState(false);
|
|
25
|
-
const client = useViaxClient();
|
|
26
|
-
const { sessionReady, isSessionLoading, isSessionError } = useViaxSession(client);
|
|
27
|
-
const subscriberQuery = useIsSubscriberQuery(client, sessionReady);
|
|
28
|
-
const billingPlansQuery = useBillingPlansQuery(client, sessionReady);
|
|
29
|
-
const reactivateMutation = useReactivateSubscriptionMutation(client);
|
|
30
|
-
const subscriptionBiId = (_b = (_a = subscriberQuery.data) === null || _a === void 0 ? void 0 : _a.subscriptionBiId) !== null && _b !== void 0 ? _b : null;
|
|
31
|
-
const paymentHistoryQuery = usePaymentHistoryQuery(client, sessionReady && activeTab === 'payment-history', getPaymentHistorySubscriptionIds(subscriberQuery.data));
|
|
32
|
-
const subscriber = (_c = subscriberQuery.data) !== null && _c !== void 0 ? _c : null;
|
|
33
|
-
const planCycle = resolvePlanLabel(subscriber);
|
|
34
|
-
const planPrice = getPlanPrice((_e = (_d = billingPlansQuery.data) === null || _d === void 0 ? void 0 : _d.plans) !== null && _e !== void 0 ? _e : [], planCycle);
|
|
35
|
-
const price = (_f = planPrice === null || planPrice === void 0 ? void 0 : planPrice.amount) !== null && _f !== void 0 ? _f : null;
|
|
36
|
-
const currency = (_g = planPrice === null || planPrice === void 0 ? void 0 : planPrice.currency) !== null && _g !== void 0 ? _g : null;
|
|
37
|
-
const renewalDate = formatDisplayDate((_h = subscriber === null || subscriber === void 0 ? void 0 : subscriber.currentPeriodEnd) !== null && _h !== void 0 ? _h : subscriber === null || subscriber === void 0 ? void 0 : subscriber.subscriptionEndDate);
|
|
38
|
-
const handleOpenRenewModal = () => {
|
|
39
|
-
if (!subscriptionBiId) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
reactivateMutation.reset();
|
|
43
|
-
setIsRenewModalOpen(true);
|
|
44
|
-
};
|
|
45
|
-
const handleConfirmRenew = () => {
|
|
46
|
-
if (!subscriptionBiId || reactivateMutation.isPending) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
reactivateMutation.mutate(subscriptionBiId);
|
|
50
|
-
};
|
|
51
|
-
useEffect(() => {
|
|
52
|
-
if (reactivateMutation.isSuccess) {
|
|
53
|
-
setIsRenewModalOpen(false);
|
|
54
|
-
}
|
|
55
|
-
}, [reactivateMutation.isSuccess]);
|
|
56
|
-
const isLoading = isSessionLoading || (sessionReady && subscriberQuery.isPending);
|
|
57
|
-
const isError = isSessionError || subscriberQuery.isError;
|
|
58
|
-
if (isLoading) {
|
|
59
|
-
return (_jsx("div", { className: "manage-page manage-page--loading d-flex justify-content-center align-items-center", children: _jsx(Spinner, { animation: "border", screenReaderText: formatMessage(messages['manage.loading']) }) }));
|
|
60
|
-
}
|
|
61
|
-
if (isError) {
|
|
62
|
-
return (_jsx("div", { className: "manage-page", children: _jsx(Container, { size: "lg", className: "manage-page__inner px-3 px-md-4 py-5", children: _jsx(Alert, { variant: "danger", children: formatMessage(messages['manage.error']) }) }) }));
|
|
63
|
-
}
|
|
64
|
-
const resolvedView = resolveSubscriptionView(subscriber);
|
|
65
|
-
const showRenewBanner = resolvedView === 'canceled_access';
|
|
66
|
-
const renewProps = {
|
|
67
|
-
onRenew: handleOpenRenewModal,
|
|
68
|
-
};
|
|
69
|
-
let subscriptionPanel;
|
|
70
|
-
switch (resolvedView) {
|
|
71
|
-
case 'active':
|
|
72
|
-
subscriptionPanel = _jsx(ActiveSubscription, { subscriber: subscriber });
|
|
73
|
-
break;
|
|
74
|
-
case 'canceled_access':
|
|
75
|
-
subscriptionPanel = (_jsx(CanceledSubscription, Object.assign({ subscriber: subscriber }, renewProps)));
|
|
76
|
-
break;
|
|
77
|
-
case 'canceled_expired':
|
|
78
|
-
subscriptionPanel = (_jsx(ResubscribeCard, { subscriber: subscriber, price: price, currency: currency }));
|
|
79
|
-
break;
|
|
80
|
-
case 'none':
|
|
81
|
-
default:
|
|
82
|
-
subscriptionPanel = (_jsx(BecomeSubscriber, { price: price, currency: currency }));
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
return (_jsxs("div", { className: "manage-page", children: [showRenewBanner && (_jsx("div", { className: "manage-renew-banner py-5 mb-2", children: _jsx(Container, { size: "lg", className: "px-3 px-md-4", children: _jsx("div", { className: "manage-renew-banner__inner d-flex flex-column align-items-start", children: _jsx(RenewBanner, Object.assign({ expireDate: renewalDate }, renewProps)) }) }) })), _jsxs(Container, { size: "lg", className: "manage-page__inner px-3 px-md-4 py-5", children: [_jsx(OrderHistoryHeader, {}), _jsx(SubscriptionTabs, { activeTab: activeTab, onChange: setActiveTab }), activeTab === 'subscription' ? (_jsxs("div", { role: "tabpanel", id: "manage-tabpanel-subscription", "aria-labelledby": "manage-tab-subscription", children: [subscriptionPanel, _jsx(HelpFooter, {})] })) : (_jsxs("div", { role: "tabpanel", id: "manage-tabpanel-payment-history", "aria-labelledby": "manage-tab-payment-history", children: [_jsx(PaymentHistory, { subscriber: subscriber, invoices: (_j = paymentHistoryQuery.data) !== null && _j !== void 0 ? _j : [], isLoading: paymentHistoryQuery.isPending, isError: paymentHistoryQuery.isError }), _jsx(HelpFooter, {})] }))] }), _jsx(RenewSubscriptionModal, { isOpen: isRenewModalOpen, onClose: () => setIsRenewModalOpen(false), onConfirm: handleConfirmRenew, isConfirming: reactivateMutation.isPending, confirmError: reactivateMutation.isError, subscriptionBiId: subscriptionBiId, renewalDate: renewalDate, price: price, currency: currency, cycle: planCycle })] }));
|
|
86
|
-
};
|
|
87
|
-
export default ManageSubscriptionPage;
|
|
88
|
-
//# sourceMappingURL=ManageSubscriptionPage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ManageSubscriptionPage.js","sourceRoot":"","sources":["../../src/manageSubscriptionPage/ManageSubscriptionPage.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EACL,KAAK,EACL,SAAS,EACT,OAAO,GACR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,kBAAkB,MAAM,qDAAqD,CAAC;AACrF,OAAO,gBAAgB,MAAM,iDAAiD,CAAC;AAC/E,OAAO,oBAAoB,EAAE,EAC3B,WAAW,GACZ,MAAM,yDAAyD,CAAC;AACjE,OAAO,UAAU,MAAM,qCAAqC,CAAC;AAC7D,OAAO,kBAAkB,MAAM,qDAAqD,CAAC;AACrF,OAAO,cAAc,MAAM,6CAA6C,CAAC;AACzE,OAAO,sBAAsB,MAAM,6DAA6D,CAAC;AACjG,OAAO,eAAe,MAAM,+CAA+C,CAAC;AAC5E,OAAO,gBAAgB,MAAM,iDAAiD,CAAC;AAC/E,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,iCAAiC,EACjC,aAAa,EACb,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AAEnG,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,sBAAsB,GAAa,GAAG,EAAE;;IAC5C,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAY,cAAc,CAAC,CAAC;IACtE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAClF,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACnE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrE,MAAM,kBAAkB,GAAG,iCAAiC,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAG,MAAA,MAAA,eAAe,CAAC,IAAI,0CAAE,gBAAgB,mCAAI,IAAI,CAAC;IACxE,MAAM,mBAAmB,GAAG,sBAAsB,CAChD,MAAM,EACN,YAAY,IAAI,SAAS,KAAK,iBAAiB,EAC/C,gCAAgC,CAAC,eAAe,CAAC,IAAI,CAAC,CACvD,CAAC;IAEF,MAAM,UAAU,GAAG,MAAA,eAAe,CAAC,IAAI,mCAAI,IAAI,CAAC;IAChD,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,YAAY,CAC5B,MAAA,MAAA,iBAAiB,CAAC,IAAI,0CAAE,KAAK,mCAAI,EAAE,EACnC,SAAS,CACV,CAAC;IACF,MAAM,KAAK,GAAG,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,mCAAI,IAAI,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,mCAAI,IAAI,CAAC;IAC7C,MAAM,WAAW,GAAG,iBAAiB,CACnC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,gBAAgB,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,mBAAmB,CAChE,CAAC;IAEF,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC3B,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,IAAI,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,SAAS,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QACD,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,kBAAkB,CAAC,SAAS,EAAE,CAAC;YACjC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnC,MAAM,SAAS,GAAG,gBAAgB,IAAI,CAAC,YAAY,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,cAAc,IAAI,eAAe,CAAC,OAAO,CAAC;IAE1D,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,cAAK,SAAS,EAAC,mFAAmF,YAChG,KAAC,OAAO,IACN,SAAS,EAAC,QAAQ,EAClB,gBAAgB,EAAE,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,GAC3D,GACE,CACP,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,cAAK,SAAS,EAAC,aAAa,YAC1B,KAAC,SAAS,IAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,sCAAsC,YACnE,KAAC,KAAK,IAAC,OAAO,EAAC,QAAQ,YAAE,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAS,GAC/D,GACR,CACP,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,YAAY,KAAK,iBAAiB,CAAC;IAC3D,MAAM,UAAU,GAAG;QACjB,OAAO,EAAE,oBAAoB;KAC9B,CAAC;IAEF,IAAI,iBAAkC,CAAC;IACvC,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,iBAAiB,GAAG,KAAC,kBAAkB,IAAC,UAAU,EAAE,UAAU,GAAI,CAAC;YACnE,MAAM;QACR,KAAK,iBAAiB;YACpB,iBAAiB,GAAG,CAClB,KAAC,oBAAoB,kBAAC,UAAU,EAAE,UAAU,IAAM,UAAU,EAAI,CACjE,CAAC;YACF,MAAM;QACR,KAAK,kBAAkB;YACrB,iBAAiB,GAAG,CAClB,KAAC,eAAe,IACd,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC;YACF,MAAM;QACR,KAAK,MAAM,CAAC;QACZ;YACE,iBAAiB,GAAG,CAClB,KAAC,gBAAgB,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,CACvD,CAAC;YACF,MAAM;IACV,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,aAAa,aACzB,eAAe,IAAI,CAClB,cAAK,SAAS,EAAC,+BAA+B,YAC5C,KAAC,SAAS,IAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,cAAc,YAC3C,cAAK,SAAS,EAAC,iEAAiE,YAC9E,KAAC,WAAW,kBACV,UAAU,EAAE,WAAW,IACnB,UAAU,EACd,GACE,GACI,GACR,CACP,EAED,MAAC,SAAS,IAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,sCAAsC,aACnE,KAAC,kBAAkB,KAAG,EACtB,KAAC,gBAAgB,IAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,GAAI,EAEjE,SAAS,KAAK,cAAc,CAAC,CAAC,CAAC,CAC9B,eACE,IAAI,EAAC,UAAU,EACf,EAAE,EAAC,8BAA8B,qBACjB,yBAAyB,aAExC,iBAAiB,EAClB,KAAC,UAAU,KAAG,IACV,CACP,CAAC,CAAC,CAAC,CACF,eACE,IAAI,EAAC,UAAU,EACf,EAAE,EAAC,iCAAiC,qBACpB,4BAA4B,aAE5C,KAAC,cAAc,IACb,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAA,mBAAmB,CAAC,IAAI,mCAAI,EAAE,EACxC,SAAS,EAAE,mBAAmB,CAAC,SAAS,EACxC,OAAO,EAAE,mBAAmB,CAAC,OAAO,GACpC,EACF,KAAC,UAAU,KAAG,IACV,CACP,IACS,EAEZ,KAAC,sBAAsB,IACrB,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACzC,SAAS,EAAE,kBAAkB,EAC7B,YAAY,EAAE,kBAAkB,CAAC,SAAS,EAC1C,YAAY,EAAE,kBAAkB,CAAC,OAAO,EACxC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,SAAS,GAChB,IACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport {\n Alert,\n Container,\n Spinner,\n} from '@openedx/paragon';\nimport { useIntl } from '@openedx/frontend-base';\n\nimport ActiveSubscription from '../components/ActiveSubscription/ActiveSubscription';\nimport BecomeSubscriber from '../components/BecomeSubscriber/BecomeSubscriber';\nimport CanceledSubscription, {\n RenewBanner,\n} from '../components/CanceledSubscription/CanceledSubscription';\nimport HelpFooter from '../components/HelpFooter/HelpFooter';\nimport OrderHistoryHeader from '../components/OrderHistoryHeader/OrderHistoryHeader';\nimport PaymentHistory from '../components/PaymentHistory/PaymentHistory';\nimport RenewSubscriptionModal from '../components/RenewSubscriptionModal/RenewSubscriptionModal';\nimport ResubscribeCard from '../components/ResubscribeCard/ResubscribeCard';\nimport SubscriptionTabs from '../components/SubscriptionTabs/SubscriptionTabs';\nimport messages from '../components/messages';\nimport {\n useBillingPlansQuery,\n useIsSubscriberQuery,\n usePaymentHistoryQuery,\n useReactivateSubscriptionMutation,\n useViaxClient,\n useViaxSession,\n} from '../data/hooks/useManageQueries';\nimport { getPaymentHistorySubscriptionIds } from '../data/services/subscription/getPaymentHistory';\nimport type { ManageTab } from '../types';\nimport { getPlanPrice } from '../utils/billingDetails';\nimport { formatDisplayDate } from '../utils/formatDate';\nimport {\n resolvePlanLabel,\n resolveSubscriptionView,\n} from '../utils/subscriptionView';\n\nconst ManageSubscriptionPage: React.FC = () => {\n const { formatMessage } = useIntl();\n const [activeTab, setActiveTab] = useState<ManageTab>('subscription');\n const [isRenewModalOpen, setIsRenewModalOpen] = useState(false);\n const client = useViaxClient();\n const { sessionReady, isSessionLoading, isSessionError } = useViaxSession(client);\n const subscriberQuery = useIsSubscriberQuery(client, sessionReady);\n const billingPlansQuery = useBillingPlansQuery(client, sessionReady);\n const reactivateMutation = useReactivateSubscriptionMutation(client);\n const subscriptionBiId = subscriberQuery.data?.subscriptionBiId ?? null;\n const paymentHistoryQuery = usePaymentHistoryQuery(\n client,\n sessionReady && activeTab === 'payment-history',\n getPaymentHistorySubscriptionIds(subscriberQuery.data),\n );\n\n const subscriber = subscriberQuery.data ?? null;\n const planCycle = resolvePlanLabel(subscriber);\n const planPrice = getPlanPrice(\n billingPlansQuery.data?.plans ?? [],\n planCycle,\n );\n const price = planPrice?.amount ?? null;\n const currency = planPrice?.currency ?? null;\n const renewalDate = formatDisplayDate(\n subscriber?.currentPeriodEnd ?? subscriber?.subscriptionEndDate,\n );\n\n const handleOpenRenewModal = () => {\n if (!subscriptionBiId) {\n return;\n }\n reactivateMutation.reset();\n setIsRenewModalOpen(true);\n };\n\n const handleConfirmRenew = () => {\n if (!subscriptionBiId || reactivateMutation.isPending) {\n return;\n }\n reactivateMutation.mutate(subscriptionBiId);\n };\n\n useEffect(() => {\n if (reactivateMutation.isSuccess) {\n setIsRenewModalOpen(false);\n }\n }, [reactivateMutation.isSuccess]);\n\n const isLoading = isSessionLoading || (sessionReady && subscriberQuery.isPending);\n const isError = isSessionError || subscriberQuery.isError;\n\n if (isLoading) {\n return (\n <div className=\"manage-page manage-page--loading d-flex justify-content-center align-items-center\">\n <Spinner\n animation=\"border\"\n screenReaderText={formatMessage(messages['manage.loading'])}\n />\n </div>\n );\n }\n\n if (isError) {\n return (\n <div className=\"manage-page\">\n <Container size=\"lg\" className=\"manage-page__inner px-3 px-md-4 py-5\">\n <Alert variant=\"danger\">{formatMessage(messages['manage.error'])}</Alert>\n </Container>\n </div>\n );\n }\n\n const resolvedView = resolveSubscriptionView(subscriber);\n const showRenewBanner = resolvedView === 'canceled_access';\n const renewProps = {\n onRenew: handleOpenRenewModal,\n };\n\n let subscriptionPanel: React.ReactNode;\n switch (resolvedView) {\n case 'active':\n subscriptionPanel = <ActiveSubscription subscriber={subscriber} />;\n break;\n case 'canceled_access':\n subscriptionPanel = (\n <CanceledSubscription subscriber={subscriber} {...renewProps} />\n );\n break;\n case 'canceled_expired':\n subscriptionPanel = (\n <ResubscribeCard\n subscriber={subscriber}\n price={price}\n currency={currency}\n />\n );\n break;\n case 'none':\n default:\n subscriptionPanel = (\n <BecomeSubscriber price={price} currency={currency} />\n );\n break;\n }\n\n return (\n <div className=\"manage-page\">\n {showRenewBanner && (\n <div className=\"manage-renew-banner py-5 mb-2\">\n <Container size=\"lg\" className=\"px-3 px-md-4\">\n <div className=\"manage-renew-banner__inner d-flex flex-column align-items-start\">\n <RenewBanner\n expireDate={renewalDate}\n {...renewProps}\n />\n </div>\n </Container>\n </div>\n )}\n\n <Container size=\"lg\" className=\"manage-page__inner px-3 px-md-4 py-5\">\n <OrderHistoryHeader />\n <SubscriptionTabs activeTab={activeTab} onChange={setActiveTab} />\n\n {activeTab === 'subscription' ? (\n <div\n role=\"tabpanel\"\n id=\"manage-tabpanel-subscription\"\n aria-labelledby=\"manage-tab-subscription\"\n >\n {subscriptionPanel}\n <HelpFooter />\n </div>\n ) : (\n <div\n role=\"tabpanel\"\n id=\"manage-tabpanel-payment-history\"\n aria-labelledby=\"manage-tab-payment-history\"\n >\n <PaymentHistory\n subscriber={subscriber}\n invoices={paymentHistoryQuery.data ?? []}\n isLoading={paymentHistoryQuery.isPending}\n isError={paymentHistoryQuery.isError}\n />\n <HelpFooter />\n </div>\n )}\n </Container>\n\n <RenewSubscriptionModal\n isOpen={isRenewModalOpen}\n onClose={() => setIsRenewModalOpen(false)}\n onConfirm={handleConfirmRenew}\n isConfirming={reactivateMutation.isPending}\n confirmError={reactivateMutation.isError}\n subscriptionBiId={subscriptionBiId}\n renewalDate={renewalDate}\n price={price}\n currency={currency}\n cycle={planCycle}\n />\n </div>\n );\n};\n\nexport default ManageSubscriptionPage;\n"]}
|
|
File without changes
|
|
File without changes
|