@edx/frontend-app-subscription-manage 1.14.0 → 1.15.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,6 +9,7 @@ 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);
12
13
  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
13
14
  ? formatMessage(messages['manage.cancelSuccess.body'], { date: accessUntil })
14
15
  : 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,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"]}
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,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAE1C,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 console.log('dashboardUrl', dashboardUrl);\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"]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External / sibling-app URLs for manage-subscription CTAs.
3
3
  */
4
- import { getAppConfig, getSiteConfig, getUrlByRouteRole } from '@openedx/frontend-base';
4
+ import { getAppConfig, 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,14 +31,12 @@ export function getLearnerHelpCenterUrl() {
31
31
  }
32
32
  /** Learner dashboard URL for post-cancel return. */
33
33
  export function getLearnerDashboardUrl() {
34
- var _a, _b;
34
+ // in stage url is not working, adding consoles for testing and static url in this function
35
35
  const config = getAppConfig(appId);
36
+ console.log('config', config);
36
37
  const fromConfig = config.SUBSCRIPTION_LEARNER_DASHBOARD_STAGE_URL;
37
- if (fromConfig) {
38
- return fromConfig;
39
- }
40
- const lms = (_b = (_a = getSiteConfig().lmsBaseUrl) === null || _a === void 0 ? void 0 : _a.replace(/\/+$/, '')) !== null && _b !== void 0 ? _b : '';
41
- return lms ? `${lms}/dashboard` : '/dashboard';
38
+ console.log('fromConfig', fromConfig);
39
+ return fromConfig || 'https://learner-home.stage.edx.org/subscription-learner-dashboard';
42
40
  }
43
41
  /** Optional change-to-annual checkout deep link. */
44
42
  export function getChangeToAnnualUrl() {
@@ -1 +1 @@
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.SUBSCRIPTION_LEARNER_DASHBOARD_STAGE_URL as string;\n if (fromConfig) {\n return fromConfig;\n }\n const lms = getSiteConfig().lmsBaseUrl?.replace(/\\/+$/, '') ?? '';\n return lms ? `${lms}/dashboard` : '/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"]}
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, 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 // in stage url is not working, adding consoles for testing and static url in this function\n const config = getAppConfig(appId);\n console.log('config', config);\n const fromConfig = config.SUBSCRIPTION_LEARNER_DASHBOARD_STAGE_URL as string;\n console.log('fromConfig', fromConfig);\n\n return fromConfig || 'https://learner-home.stage.edx.org/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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edx/frontend-app-subscription-manage",
3
- "version": "1.14.0",
3
+ "version": "1.15.0",
4
4
  "description": "Subscription Manage Frontend application",
5
5
  "repository": {
6
6
  "type": "git",