@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.
Files changed (97) hide show
  1. package/dist/components/ActiveSubscription/ActiveSubscription.js +4 -4
  2. package/dist/components/ActiveSubscription/ActiveSubscription.js.map +1 -1
  3. package/dist/components/BecomeSubscriber/BecomeSubscriber.js +3 -3
  4. package/dist/components/BecomeSubscriber/BecomeSubscriber.js.map +1 -1
  5. package/dist/components/CancelConfirmation/CancelConfirmation.js +6 -6
  6. package/dist/components/CancelConfirmation/CancelConfirmation.js.map +1 -1
  7. package/dist/components/CancelSuccess/CancelSuccess.js +3 -3
  8. package/dist/components/CancelSuccess/CancelSuccess.js.map +1 -1
  9. package/dist/components/CanceledSubscription/CanceledSubscription.js +6 -6
  10. package/dist/components/CanceledSubscription/CanceledSubscription.js.map +1 -1
  11. package/dist/components/EnrolledCoursesList/EnrolledCoursesList.js +2 -2
  12. package/dist/components/EnrolledCoursesList/EnrolledCoursesList.js.map +1 -1
  13. package/dist/components/HelpFooter/HelpFooter.js +1 -1
  14. package/dist/components/HelpFooter/HelpFooter.js.map +1 -1
  15. package/dist/components/OrderHistory/OrderHistoryCard.d.ts +11 -0
  16. package/dist/components/OrderHistory/OrderHistoryCard.js +6 -0
  17. package/dist/components/OrderHistory/OrderHistoryCard.js.map +1 -0
  18. package/dist/components/OrderHistory/OrderHistoryDetails.d.ts +2 -0
  19. package/dist/components/OrderHistory/OrderHistoryDetails.js +120 -0
  20. package/dist/components/OrderHistory/OrderHistoryDetails.js.map +1 -0
  21. package/dist/components/OrderHistory/OrderList.d.ts +3 -0
  22. package/dist/components/OrderHistory/OrderList.js +13 -0
  23. package/dist/components/OrderHistory/OrderList.js.map +1 -0
  24. package/dist/components/OrderHistory/OrderPurchases.d.ts +4 -0
  25. package/dist/components/OrderHistory/OrderPurchases.js +44 -0
  26. package/dist/components/OrderHistory/OrderPurchases.js.map +1 -0
  27. package/dist/components/OrderHistory/ProgramItemsTable.d.ts +7 -0
  28. package/dist/components/OrderHistory/ProgramItemsTable.js +49 -0
  29. package/dist/components/OrderHistory/ProgramItemsTable.js.map +1 -0
  30. package/dist/components/OrderHistory/data/receiptRows.d.ts +17 -0
  31. package/dist/components/OrderHistory/data/receiptRows.js +16 -0
  32. package/dist/components/OrderHistory/data/receiptRows.js.map +1 -0
  33. package/dist/components/OrderHistory/messages.d.ts +118 -0
  34. package/dist/components/OrderHistory/messages.js +120 -0
  35. package/dist/components/OrderHistory/messages.js.map +1 -0
  36. package/dist/components/OrderHistoryHeader/OrderHistoryHeader.js +1 -1
  37. package/dist/components/OrderHistoryHeader/OrderHistoryHeader.js.map +1 -1
  38. package/dist/components/PaymentHistory/PaymentHistory.js +5 -5
  39. package/dist/components/PaymentHistory/PaymentHistory.js.map +1 -1
  40. package/dist/components/RefundNotice/RefundNotice.d.ts +3 -0
  41. package/dist/components/RefundNotice/RefundNotice.js +15 -0
  42. package/dist/components/RefundNotice/RefundNotice.js.map +1 -0
  43. package/dist/components/RefundNotice/messages.d.ts +18 -0
  44. package/dist/components/RefundNotice/messages.js +20 -0
  45. package/dist/components/RefundNotice/messages.js.map +1 -0
  46. package/dist/components/RenewSubscriptionModal/RenewSubscriptionModal.js +10 -10
  47. package/dist/components/RenewSubscriptionModal/RenewSubscriptionModal.js.map +1 -1
  48. package/dist/components/ResubscribeCard/ResubscribeCard.js +5 -5
  49. package/dist/components/ResubscribeCard/ResubscribeCard.js.map +1 -1
  50. package/dist/components/UpdatePaymentMethodModal/UpdatePaymentMethodModal.js +12 -12
  51. package/dist/components/UpdatePaymentMethodModal/UpdatePaymentMethodModal.js.map +1 -1
  52. package/dist/components/messages.d.ts +89 -99
  53. package/dist/components/messages.js +182 -192
  54. package/dist/components/messages.js.map +1 -1
  55. package/dist/constants.d.ts +7 -1
  56. package/dist/constants.js +7 -1
  57. package/dist/constants.js.map +1 -1
  58. package/dist/data/hooks/keys.d.ts +5 -0
  59. package/dist/data/hooks/keys.js +5 -0
  60. package/dist/data/hooks/keys.js.map +1 -1
  61. package/dist/data/hooks/useOrderHistoryQueries.d.ts +11 -0
  62. package/dist/data/hooks/useOrderHistoryQueries.js +30 -0
  63. package/dist/data/hooks/useOrderHistoryQueries.js.map +1 -0
  64. package/dist/data/services/orderHistory/orderHistory.d.ts +7 -0
  65. package/dist/data/services/orderHistory/orderHistory.js +40 -0
  66. package/dist/data/services/orderHistory/orderHistory.js.map +1 -0
  67. package/dist/{manageSubscriptionPage → orderHistory}/CancelSubscriptionPage.js +4 -4
  68. package/dist/orderHistory/CancelSubscriptionPage.js.map +1 -0
  69. package/dist/{manageSubscriptionPage → orderHistory}/CancelSuccessPage.js +2 -2
  70. package/dist/orderHistory/CancelSuccessPage.js.map +1 -0
  71. package/dist/orderHistory/OrderHistoryPage.d.ts +3 -0
  72. package/dist/orderHistory/OrderHistoryPage.js +127 -0
  73. package/dist/orderHistory/OrderHistoryPage.js.map +1 -0
  74. package/dist/routes.d.ts +23 -2
  75. package/dist/routes.js +44 -19
  76. package/dist/routes.js.map +1 -1
  77. package/dist/style.scss +1 -1
  78. package/dist/styles/components/{manageSubscription.scss → orderHistory.scss} +60 -24
  79. package/dist/types.d.ts +55 -0
  80. package/dist/types.js.map +1 -1
  81. package/dist/utils/currency.d.ts +6 -0
  82. package/dist/utils/currency.js +6 -0
  83. package/dist/utils/currency.js.map +1 -0
  84. package/dist/utils/queries.d.ts +6 -0
  85. package/dist/utils/queries.js +12 -0
  86. package/dist/utils/queries.js.map +1 -1
  87. package/package.json +1 -1
  88. package/dist/components/SubscriptionTabs/SubscriptionTabs.d.ts +0 -8
  89. package/dist/components/SubscriptionTabs/SubscriptionTabs.js +0 -15
  90. package/dist/components/SubscriptionTabs/SubscriptionTabs.js.map +0 -1
  91. package/dist/manageSubscriptionPage/CancelSubscriptionPage.js.map +0 -1
  92. package/dist/manageSubscriptionPage/CancelSuccessPage.js.map +0 -1
  93. package/dist/manageSubscriptionPage/ManageSubscriptionPage.d.ts +0 -3
  94. package/dist/manageSubscriptionPage/ManageSubscriptionPage.js +0 -88
  95. package/dist/manageSubscriptionPage/ManageSubscriptionPage.js.map +0 -1
  96. /package/dist/{manageSubscriptionPage → orderHistory}/CancelSubscriptionPage.d.ts +0 -0
  97. /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":"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","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"]}