@edx/frontend-app-subscription-manage 1.15.0 → 1.17.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.
|
@@ -9,7 +9,6 @@ const CancelSuccess = ({ subscriber }) => {
|
|
|
9
9
|
const { formatMessage } = useIntl();
|
|
10
10
|
const accessUntil = formatDisplayDate((_a = subscriber === null || subscriber === void 0 ? void 0 : subscriber.currentPeriodEnd) !== null && _a !== void 0 ? _a : subscriber === null || subscriber === void 0 ? void 0 : subscriber.subscriptionEndDate);
|
|
11
11
|
const dashboardUrl = getLearnerDashboardUrl();
|
|
12
|
-
console.log('dashboardUrl', dashboardUrl);
|
|
13
12
|
return (_jsxs("div", { className: "manage-cancel-success d-flex flex-column align-items-stretch py-5", children: [_jsxs("div", { className: "manage-cancel-success__copy", children: [_jsx("h1", { className: "manage-cancel-success__title h2 font-weight-bold text-primary-500 mb-3", children: formatMessage(messages['manage.cancelSuccess.title']) }), _jsx("p", { className: "manage-cancel-success__body text-primary-500 mb-0", children: accessUntil
|
|
14
13
|
? formatMessage(messages['manage.cancelSuccess.body'], { date: accessUntil })
|
|
15
14
|
: formatMessage(messages['manage.cancelSuccess.bodyNoDate']) })] }), _jsx(Button, { className: "manage-btn manage-btn--dark align-self-end", href: dashboardUrl, children: formatMessage(messages['manage.cancelSuccess.return']) })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CancelSuccess.js","sourceRoot":"","sources":["../../../src/components/CancelSuccess/CancelSuccess.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,QAAQ,MAAM,aAAa,CAAC;AAMnC,MAAM,aAAa,GAAiC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;;IACrE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,iBAAiB,CACnC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,gBAAgB,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,mBAAmB,CAChE,CAAC;IACF,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAE9C,OAAO,
|
|
1
|
+
{"version":3,"file":"CancelSuccess.js","sourceRoot":"","sources":["../../../src/components/CancelSuccess/CancelSuccess.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,QAAQ,MAAM,aAAa,CAAC;AAMnC,MAAM,aAAa,GAAiC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;;IACrE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,iBAAiB,CACnC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,gBAAgB,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,mBAAmB,CAChE,CAAC;IACF,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAE9C,OAAO,CACL,eAAK,SAAS,EAAC,mEAAmE,aAChF,eAAK,SAAS,EAAC,6BAA6B,aAC1C,aAAI,SAAS,EAAC,wEAAwE,YACnF,aAAa,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,GACnD,EACL,YAAG,SAAS,EAAC,mDAAmD,YAC7D,WAAW;4BACV,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;4BAC7E,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC,GAC5D,IACA,EACN,KAAC,MAAM,IAAC,SAAS,EAAC,4CAA4C,EAAC,IAAI,EAAE,YAAY,YAC9E,aAAa,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC,GAChD,IACL,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import React from 'react';\nimport { Button } from '@openedx/paragon';\nimport { useIntl } from '@openedx/frontend-base';\n\nimport type { CurrentUserSubscriberResult } from '../../types';\nimport { formatDisplayDate } from '../../utils/formatDate';\nimport { getLearnerDashboardUrl } from '../../utils/urls';\nimport messages from '../messages';\n\ninterface CancelSuccessProps {\n subscriber: CurrentUserSubscriberResult | null,\n}\n\nconst CancelSuccess: React.FC<CancelSuccessProps> = ({ subscriber }) => {\n const { formatMessage } = useIntl();\n const accessUntil = formatDisplayDate(\n subscriber?.currentPeriodEnd ?? subscriber?.subscriptionEndDate,\n );\n const dashboardUrl = getLearnerDashboardUrl();\n\n return (\n <div className=\"manage-cancel-success d-flex flex-column align-items-stretch py-5\">\n <div className=\"manage-cancel-success__copy\">\n <h1 className=\"manage-cancel-success__title h2 font-weight-bold text-primary-500 mb-3\">\n {formatMessage(messages['manage.cancelSuccess.title'])}\n </h1>\n <p className=\"manage-cancel-success__body text-primary-500 mb-0\">\n {accessUntil\n ? formatMessage(messages['manage.cancelSuccess.body'], { date: accessUntil })\n : formatMessage(messages['manage.cancelSuccess.bodyNoDate'])}\n </p>\n </div>\n <Button className=\"manage-btn manage-btn--dark align-self-end\" href={dashboardUrl}>\n {formatMessage(messages['manage.cancelSuccess.return'])}\n </Button>\n </div>\n );\n};\n\nexport default CancelSuccess;\n"]}
|
package/dist/utils/urls.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External / sibling-app URLs for manage-subscription CTAs.
|
|
3
3
|
*/
|
|
4
|
-
import { getAppConfig, getUrlByRouteRole } from '@openedx/frontend-base';
|
|
4
|
+
import { getAppConfig, getSiteConfig, getUrlByRouteRole } from '@openedx/frontend-base';
|
|
5
5
|
import { DEFAULT_LEARNER_HELP_CENTER_URL, DEFAULT_SUBSCRIPTION_LEARN_MORE_URL, appId, subscriptionCheckoutRole, } from '../constants';
|
|
6
6
|
/** Checkout / subscribe flow URL (renew + new subscribe). */
|
|
7
7
|
export function getCheckoutUrl() {
|
|
@@ -31,12 +31,14 @@ export function getLearnerHelpCenterUrl() {
|
|
|
31
31
|
}
|
|
32
32
|
/** Learner dashboard URL for post-cancel return. */
|
|
33
33
|
export function getLearnerDashboardUrl() {
|
|
34
|
-
|
|
34
|
+
var _a, _b;
|
|
35
35
|
const config = getAppConfig(appId);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
const fromConfig = config.LEARNER_DASHBOARD_URL;
|
|
37
|
+
if (fromConfig) {
|
|
38
|
+
return fromConfig;
|
|
39
|
+
}
|
|
40
|
+
const lms = (_b = (_a = getSiteConfig().baseUrl) === null || _a === void 0 ? void 0 : _a.replace(/\/+$/, '')) !== null && _b !== void 0 ? _b : '';
|
|
41
|
+
return lms ? `${lms}/subscription-learner-dashboard` : '/subscription-learner-dashboard';
|
|
40
42
|
}
|
|
41
43
|
/** Optional change-to-annual checkout deep link. */
|
|
42
44
|
export function getChangeToAnnualUrl() {
|
package/dist/utils/urls.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/utils/urls.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/utils/urls.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * External / sibling-app URLs for manage-subscription CTAs.\n */\n\nimport { getAppConfig, getSiteConfig, getUrlByRouteRole } from '@openedx/frontend-base';\n\nimport {\n DEFAULT_LEARNER_HELP_CENTER_URL,\n DEFAULT_SUBSCRIPTION_LEARN_MORE_URL,\n appId,\n subscriptionCheckoutRole,\n} from '../constants';\n\n/** Checkout / subscribe flow URL (renew + new subscribe). */\nexport function getCheckoutUrl(): string {\n const config = getAppConfig(appId);\n const fromConfig = config.CHECKOUT_URL as string | undefined;\n if (fromConfig) {\n return fromConfig;\n }\n\n const fromRole = getUrlByRouteRole(subscriptionCheckoutRole)?.replace(/\\/+$/, '');\n if (fromRole) {\n return fromRole;\n }\n\n return '/checkout';\n}\n\n/** Marketing page for \"Learn about edX Subscription\". */\nexport function getLearnMoreUrl(): string {\n const config = getAppConfig(appId);\n return (config.SUBSCRIPTION_LEARN_MORE_URL as string | undefined)\n ?? DEFAULT_SUBSCRIPTION_LEARN_MORE_URL;\n}\n\n/** Learner Help Center (footer link). */\nexport function getLearnerHelpCenterUrl(): string {\n const config = getAppConfig(appId);\n return (config.LEARNER_HELP_CENTER_URL as string | undefined)\n ?? DEFAULT_LEARNER_HELP_CENTER_URL;\n}\n\n/** Learner dashboard URL for post-cancel return. */\nexport function getLearnerDashboardUrl(): string {\n const config = getAppConfig(appId);\n const fromConfig = config.LEARNER_DASHBOARD_URL as string | undefined;\n if (fromConfig) {\n return fromConfig;\n }\n const lms = getSiteConfig().baseUrl?.replace(/\\/+$/, '') ?? '';\n return lms ? `${lms}/subscription-learner-dashboard` : '/subscription-learner-dashboard';\n}\n\n/** Optional change-to-annual checkout deep link. */\nexport function getChangeToAnnualUrl(): string {\n const config = getAppConfig(appId);\n const fromConfig = config.CHANGE_TO_ANNUAL_URL as string | undefined;\n if (fromConfig) {\n return fromConfig;\n }\n return `${getCheckoutUrl()}?plan=annual`;\n}\n\n/** Courses / LMS host used for certificate and course deep links. */\nexport function getCoursesBaseUrl(): string {\n const config = getAppConfig(appId);\n return (config.COURSES_BASE_URL as string | undefined)?.replace(/\\/+$/, '') ?? '';\n}\n\n/**\n * Resolve a certificate path (`tCertificateUrl`) against COURSES_BASE_URL.\n * Returns null when the path is empty.\n */\nexport function getCertificateUrl(certificatePath: string | null | undefined): string | null {\n const path = certificatePath?.trim();\n if (!path) {\n return null;\n }\n if (/^https?:\\/\\//i.test(path)) {\n return path;\n }\n const base = getCoursesBaseUrl();\n if (!base) {\n return path.startsWith('/') ? path : `/${path}`;\n }\n return `${base}${path.startsWith('/') ? path : `/${path}`}`;\n}\n"]}
|