@edx/frontend-plugin-advertisements 2.28.0 → 2.29.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.
@@ -86,7 +86,13 @@ const LockPaywall = _ref => {
86
86
  courseId: courseId,
87
87
  offer: subscriptionOffer,
88
88
  onSubscribeClick: handleSubscribeClick,
89
- onUpgradeEvent: stage => stage === 'succeeded' && handleUpgradeClick()
89
+ onUpgradeEvent: (0, _subscriptionUpsell.logSubscriptionUpgrade)({
90
+ org,
91
+ courseId,
92
+ pageName: 'in_course',
93
+ placement: 'paywall',
94
+ linkName: 'in_course_upgrade_now'
95
+ }, conversion)
90
96
  });
91
97
  }
92
98
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"LockPaywall.js","names":["_react","_interopRequireDefault","require","_propTypes","_classnames","_i18n","_paragon","_icons","_messages","_edX_locked_certificate","_modelStore","_upgradeButton","_auth","_analytics","_upsellBullets","_cohesion","_subscriptionUpsell","_SubscriptionPaywall","_jsxRuntime","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","LockPaywall","_ref","courseId","intl","useIntl","course","useModel","accessExpiration","marketingUrl","offer","org","verifiedMode","conversion","useCohesion","subscriptionOffer","useSubscriptionOffer","shouldDisplayGatedContentTwoColumnsHalf","useWindowSize","width","breakpoints","large","minWidth","shouldWrapTextOnButton","extraSmall","accessExpirationDate","Date","expirationDate","pastExpirationDeadline","now","eventProperties","org_key","courserun_key","handleUpgradeClick","sendTrackEvent","linkCategory","linkName","linkType","pageName","handleSubscribeClick","canSubscribe","canUpgradeInPlace","jsx","onSubscribeClick","onUpgradeEvent","stage","userId","getAuthenticatedUser","handleUpgradeClickPastExpiration","Alert","variant","icon","Locked","className","children","jsxs","formatMessage","messages","Hyperlink","destination","onClick","target","id","defaultMessage","description","classNames","style","float","alt","src","certificateLocked","height","VerifiedCertBullet","UnlockGradedBullet","FullAccessBullet","SupportMissionBullet","UpgradeButton","whiteSpace","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../src/paywall/LockPaywall.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Alert, breakpoints, Hyperlink, useWindowSize,\n} from '@openedx/paragon';\nimport { Locked } from '@openedx/paragon/icons';\nimport messages from '@src/courseware/course/sequence/lock-paywall/messages';\nimport certificateLocked from '@src/generic/assets/edX_locked_certificate.png';\nimport { useModel } from '@src/generic/model-store';\nimport { UpgradeButton } from '@src/generic/upgrade-button';\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { sendTrackEvent } from '@edx/frontend-platform/analytics';\n\nimport {\n VerifiedCertBullet,\n UnlockGradedBullet,\n FullAccessBullet,\n SupportMissionBullet,\n} from '../generic/upsell-bullets';\nimport { useCohesion } from '../cohesion';\nimport { useSubscriptionOffer } from '../subscription-upsell';\nimport SubscriptionPaywall from './SubscriptionPaywall';\n\nconst LockPaywall = ({\n courseId,\n}) => {\n const intl = useIntl();\n const course = useModel('coursewareMeta', courseId);\n const {\n accessExpiration,\n marketingUrl,\n offer,\n } = course;\n\n const {\n org, verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const { conversion } = useCohesion(courseId);\n const subscriptionOffer = useSubscriptionOffer(courseId);\n\n // the following variables are set and used for responsive layout to work with\n // whether the NotificationTray is open or not and if there's an offer with longer text\n const shouldDisplayGatedContentTwoColumnsHalf = useWindowSize().width <= breakpoints.large.minWidth;\n const shouldWrapTextOnButton = useWindowSize().width > breakpoints.extraSmall.minWidth;\n\n const accessExpirationDate = accessExpiration ? new Date(accessExpiration.expirationDate) : null;\n const pastExpirationDeadline = accessExpiration ? new Date(Date.now()) > accessExpirationDate : false;\n\n if (!verifiedMode) {\n return null;\n }\n\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n\n const handleUpgradeClick = () => {\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: '(none)',\n linkName: 'in_course_upgrade',\n linkType: 'link',\n pageName: 'in_course',\n });\n\n conversion('Upgraded');\n };\n\n const handleSubscribeClick = () => {\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: '(none)',\n linkName: 'in_course_subscribe',\n linkType: 'link',\n pageName: 'in_course',\n });\n conversion('Subscribe Clicked'); // on the click, before checkout\n };\n\n // Learners who can subscribe get the Subscribe banner (Figma shows Subscribe only) and subscribers\n // get the same banner with Upgrade now. Unknown status keeps the paywall below.\n if (!pastExpirationDeadline && (subscriptionOffer?.canSubscribe || subscriptionOffer?.canUpgradeInPlace)) {\n return (\n <SubscriptionPaywall\n courseId={courseId}\n offer={subscriptionOffer}\n onSubscribeClick={handleSubscribeClick}\n onUpgradeEvent={(stage) => stage === 'succeeded' && handleUpgradeClick()}\n />\n );\n }\n\n const { userId } = getAuthenticatedUser();\n\n const handleUpgradeClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.gated_content.past_expiration.link_clicked', {\n ...eventProperties,\n linkCategory: 'gated_content',\n linkName: 'course_details',\n linkType: 'link',\n pageName: 'in_course',\n });\n };\n\n return (\n <Alert variant=\"light\" aria-live=\"off\" icon={Locked} className=\"lock-paywall-container\" data-testid=\"lock-paywall-lock-paywall-test-id\">\n <div className=\"row\">\n <div className=\"col\">\n <h4 aria-level=\"3\">\n <span>{intl.formatMessage(messages['learn.lockPaywall.title'])}</span>\n </h4>\n {pastExpirationDeadline ? (\n <div className=\"mb-2 upgrade-intro\" data-testid=\"lock-paywall-past-expiration\">\n {intl.formatMessage(messages['learn.lockPaywall.content.pastExpiration'])}\n <Hyperlink\n destination={marketingUrl}\n onClick={handleUpgradeClickPastExpiration(eventProperties)}\n target=\"_blank\"\n data-testid=\"lock-paywall-past-expiration-link\"\n >\n {intl.formatMessage(messages['learn.lockPaywall.courseDetails'])}\n <span>\n {intl.formatMessage({\n id: 'learn.lockPaywall.content.link.new-tab.screenreader-only.message',\n defaultMessage: 'in a new tab',\n description: 'Screenreader only text for new tab link',\n })}\n </span>\n </Hyperlink>\n </div>\n ) : (\n <div className=\"mb-2 upgrade-intro\">\n {intl.formatMessage(messages['learn.lockPaywall.content'])}\n </div>\n )}\n\n <div className={classNames('d-inline-flex flex-row', { 'flex-wrap': shouldDisplayGatedContentTwoColumnsHalf })}>\n <div style={{ float: 'left' }} className=\"mr-3 mb-2\">\n <img\n alt={intl.formatMessage(messages['learn.lockPaywall.example.alt'])}\n src={certificateLocked}\n className=\"border-0 certificate-image-banner\"\n style={{ height: '128px', width: '175px' }}\n />\n </div>\n\n <div className=\"mw-xs list-div\">\n <div className=\"mb-2\">\n {intl.formatMessage(messages['learn.lockPaywall.list.intro'])}\n </div>\n <ul className=\"fa-ul ml-4 pl-2\">\n <VerifiedCertBullet />\n <UnlockGradedBullet />\n <FullAccessBullet />\n <SupportMissionBullet />\n </ul>\n </div>\n </div>\n </div>\n\n {pastExpirationDeadline\n ? null\n : (\n <div\n className={\n classNames('d-flex flex-column align-items-md-center text-right justify-content-center', {\n 'col-md-4 mx-md-3': !shouldDisplayGatedContentTwoColumnsHalf, 'col-md-6': shouldDisplayGatedContentTwoColumnsHalf,\n })\n }\n >\n <UpgradeButton\n offer={offer}\n onClick={() => handleUpgradeClick(eventProperties, userId)}\n verifiedMode={verifiedMode}\n style={{ whiteSpace: shouldWrapTextOnButton ? 'nowrap' : null }}\n data-testid=\"upgrade-button\"\n />\n </div>\n )}\n </div>\n </Alert>\n );\n};\nLockPaywall.propTypes = {\n courseId: PropTypes.string.isRequired,\n};\n\nexport default LockPaywall;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"LockPaywall.js","names":["_react","_interopRequireDefault","require","_propTypes","_classnames","_i18n","_paragon","_icons","_messages","_edX_locked_certificate","_modelStore","_upgradeButton","_auth","_analytics","_upsellBullets","_cohesion","_subscriptionUpsell","_SubscriptionPaywall","_jsxRuntime","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","LockPaywall","_ref","courseId","intl","useIntl","course","useModel","accessExpiration","marketingUrl","offer","org","verifiedMode","conversion","useCohesion","subscriptionOffer","useSubscriptionOffer","shouldDisplayGatedContentTwoColumnsHalf","useWindowSize","width","breakpoints","large","minWidth","shouldWrapTextOnButton","extraSmall","accessExpirationDate","Date","expirationDate","pastExpirationDeadline","now","eventProperties","org_key","courserun_key","handleUpgradeClick","sendTrackEvent","linkCategory","linkName","linkType","pageName","handleSubscribeClick","canSubscribe","canUpgradeInPlace","jsx","onSubscribeClick","onUpgradeEvent","logSubscriptionUpgrade","placement","userId","getAuthenticatedUser","handleUpgradeClickPastExpiration","Alert","variant","icon","Locked","className","children","jsxs","formatMessage","messages","Hyperlink","destination","onClick","target","id","defaultMessage","description","classNames","style","float","alt","src","certificateLocked","height","VerifiedCertBullet","UnlockGradedBullet","FullAccessBullet","SupportMissionBullet","UpgradeButton","whiteSpace","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../src/paywall/LockPaywall.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Alert, breakpoints, Hyperlink, useWindowSize,\n} from '@openedx/paragon';\nimport { Locked } from '@openedx/paragon/icons';\nimport messages from '@src/courseware/course/sequence/lock-paywall/messages';\nimport certificateLocked from '@src/generic/assets/edX_locked_certificate.png';\nimport { useModel } from '@src/generic/model-store';\nimport { UpgradeButton } from '@src/generic/upgrade-button';\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { sendTrackEvent } from '@edx/frontend-platform/analytics';\n\nimport {\n VerifiedCertBullet,\n UnlockGradedBullet,\n FullAccessBullet,\n SupportMissionBullet,\n} from '../generic/upsell-bullets';\nimport { useCohesion } from '../cohesion';\nimport { logSubscriptionUpgrade, useSubscriptionOffer } from '../subscription-upsell';\nimport SubscriptionPaywall from './SubscriptionPaywall';\n\nconst LockPaywall = ({\n courseId,\n}) => {\n const intl = useIntl();\n const course = useModel('coursewareMeta', courseId);\n const {\n accessExpiration,\n marketingUrl,\n offer,\n } = course;\n\n const {\n org, verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const { conversion } = useCohesion(courseId);\n const subscriptionOffer = useSubscriptionOffer(courseId);\n\n // the following variables are set and used for responsive layout to work with\n // whether the NotificationTray is open or not and if there's an offer with longer text\n const shouldDisplayGatedContentTwoColumnsHalf = useWindowSize().width <= breakpoints.large.minWidth;\n const shouldWrapTextOnButton = useWindowSize().width > breakpoints.extraSmall.minWidth;\n\n const accessExpirationDate = accessExpiration ? new Date(accessExpiration.expirationDate) : null;\n const pastExpirationDeadline = accessExpiration ? new Date(Date.now()) > accessExpirationDate : false;\n\n if (!verifiedMode) {\n return null;\n }\n\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n\n const handleUpgradeClick = () => {\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: '(none)',\n linkName: 'in_course_upgrade',\n linkType: 'link',\n pageName: 'in_course',\n });\n\n conversion('Upgraded');\n };\n\n const handleSubscribeClick = () => {\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: '(none)',\n linkName: 'in_course_subscribe',\n linkType: 'link',\n pageName: 'in_course',\n });\n conversion('Subscribe Clicked'); // on the click, before checkout\n };\n\n // Learners who can subscribe get the Subscribe banner (Figma shows Subscribe only) and subscribers\n // get the same banner with Upgrade now. Unknown status keeps the paywall below.\n if (!pastExpirationDeadline && (subscriptionOffer?.canSubscribe || subscriptionOffer?.canUpgradeInPlace)) {\n return (\n <SubscriptionPaywall\n courseId={courseId}\n offer={subscriptionOffer}\n onSubscribeClick={handleSubscribeClick}\n onUpgradeEvent={logSubscriptionUpgrade({\n org, courseId, pageName: 'in_course', placement: 'paywall', linkName: 'in_course_upgrade_now',\n }, conversion)}\n />\n );\n }\n\n const { userId } = getAuthenticatedUser();\n\n const handleUpgradeClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.gated_content.past_expiration.link_clicked', {\n ...eventProperties,\n linkCategory: 'gated_content',\n linkName: 'course_details',\n linkType: 'link',\n pageName: 'in_course',\n });\n };\n\n return (\n <Alert variant=\"light\" aria-live=\"off\" icon={Locked} className=\"lock-paywall-container\" data-testid=\"lock-paywall-lock-paywall-test-id\">\n <div className=\"row\">\n <div className=\"col\">\n <h4 aria-level=\"3\">\n <span>{intl.formatMessage(messages['learn.lockPaywall.title'])}</span>\n </h4>\n {pastExpirationDeadline ? (\n <div className=\"mb-2 upgrade-intro\" data-testid=\"lock-paywall-past-expiration\">\n {intl.formatMessage(messages['learn.lockPaywall.content.pastExpiration'])}\n <Hyperlink\n destination={marketingUrl}\n onClick={handleUpgradeClickPastExpiration(eventProperties)}\n target=\"_blank\"\n data-testid=\"lock-paywall-past-expiration-link\"\n >\n {intl.formatMessage(messages['learn.lockPaywall.courseDetails'])}\n <span>\n {intl.formatMessage({\n id: 'learn.lockPaywall.content.link.new-tab.screenreader-only.message',\n defaultMessage: 'in a new tab',\n description: 'Screenreader only text for new tab link',\n })}\n </span>\n </Hyperlink>\n </div>\n ) : (\n <div className=\"mb-2 upgrade-intro\">\n {intl.formatMessage(messages['learn.lockPaywall.content'])}\n </div>\n )}\n\n <div className={classNames('d-inline-flex flex-row', { 'flex-wrap': shouldDisplayGatedContentTwoColumnsHalf })}>\n <div style={{ float: 'left' }} className=\"mr-3 mb-2\">\n <img\n alt={intl.formatMessage(messages['learn.lockPaywall.example.alt'])}\n src={certificateLocked}\n className=\"border-0 certificate-image-banner\"\n style={{ height: '128px', width: '175px' }}\n />\n </div>\n\n <div className=\"mw-xs list-div\">\n <div className=\"mb-2\">\n {intl.formatMessage(messages['learn.lockPaywall.list.intro'])}\n </div>\n <ul className=\"fa-ul ml-4 pl-2\">\n <VerifiedCertBullet />\n <UnlockGradedBullet />\n <FullAccessBullet />\n <SupportMissionBullet />\n </ul>\n </div>\n </div>\n </div>\n\n {pastExpirationDeadline\n ? null\n : (\n <div\n className={\n classNames('d-flex flex-column align-items-md-center text-right justify-content-center', {\n 'col-md-4 mx-md-3': !shouldDisplayGatedContentTwoColumnsHalf, 'col-md-6': shouldDisplayGatedContentTwoColumnsHalf,\n })\n }\n >\n <UpgradeButton\n offer={offer}\n onClick={() => handleUpgradeClick(eventProperties, userId)}\n verifiedMode={verifiedMode}\n style={{ whiteSpace: shouldWrapTextOnButton ? 'nowrap' : null }}\n data-testid=\"upgrade-button\"\n />\n </div>\n )}\n </div>\n </Alert>\n );\n};\nLockPaywall.propTypes = {\n courseId: PropTypes.string.isRequired,\n};\n\nexport default LockPaywall;\n"],"mappings":"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","ignoreList":[]}
@@ -110,7 +110,7 @@ const SubscriptionUpsell = _ref => {
110
110
  if (error) {
111
111
  safeCall(onUpgradeEvent, 'failed', error);
112
112
  } else {
113
- safeCall(onUpgradeEvent, 'succeeded');
113
+ safeCall(onUpgradeEvent, 'succeeded', result);
114
114
  safeCall(onUpgraded || (() => (0, _reloadWhenUpgraded.default)(requestedCourseId, {
115
115
  signal,
116
116
  startPath
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionUpsell.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_i18n","_logging","_paragon","_lms_api","_messages","_reloadWhenUpgraded","_useSubscriptionOffer","_messages2","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","UPGRADE_STATE","exports","IDLE","LOADING","PENDING","NOT_ACTIVE","FAILED","safeCall","fn","_len","args","Array","_key","Promise","resolve","catch","logError","error","SubscriptionUpsell","_ref","courseId","onSubscribeClick","onPurchaseClick","onUpgradeEvent","onUpgraded","className","formatMessage","useIntl","offer","useSubscriptionOffer","upgrades","setUpgrades","useState","inFlight","useRef","Set","upgradeState","setUpgradeFor","id","state","prev","pollSignal","useEffect","controller","AbortController","current","signal","abort","purchaseUrl","canPurchase","coursePrice","handleUpgrade","requestedCourseId","startPath","global","location","pathname","add","nextState","result","upgradeEnrollmentWithSubscription","success","SubscriptionUpgradeError","code","status","delete","reloadWhenUpgraded","canUpgradeInPlace","jsx","role","children","messages","upgradePending","jsxs","upgradeNotActive","subscribeUrl","Fragment","Hyperlink","destination","reactivateSubscription","upgradeFailed","Button","variant","block","onClick","disabled","upgrading","upgradeNow","hasUpsell","showNotIncluded","notIncluded","as","href","canSubscribe","purchase","price","purchaseNoPrice","subscribe","purchaseCode","upgradeNotificationMessages","discountCodeMessage","propTypes","PropTypes","string","isRequired","func","defaultProps","undefined","_default"],"sources":["../../src/subscription-upsell/SubscriptionUpsell.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { logError } from '@edx/frontend-platform/logging';\nimport { Button, Hyperlink } from '@openedx/paragon';\n\nimport { SubscriptionUpgradeError, upgradeEnrollmentWithSubscription } from '../data/lms_api';\nimport upgradeNotificationMessages from '../upgrade-notification/messages';\nimport reloadWhenUpgraded from './reloadWhenUpgraded';\nimport useSubscriptionOffer from './useSubscriptionOffer';\nimport messages from './messages';\n\nexport const UPGRADE_STATE = {\n IDLE: 'idle',\n LOADING: 'loading',\n PENDING: 'pending',\n NOT_ACTIVE: 'not_active',\n FAILED: 'failed',\n};\n\n// Host callbacks (analytics, refresh) must never change the outcome of the upgrade request.\nconst safeCall = (fn, ...args) => {\n try {\n Promise.resolve(fn?.(...args)).catch(logError);\n } catch (error) {\n logError(error);\n }\n};\n\n/** Subscribe and Purchase, Purchase only, Upgrade now for subscribers, or the \"not included\" note. */\nconst SubscriptionUpsell = ({\n courseId,\n onSubscribeClick,\n onPurchaseClick,\n onUpgradeEvent,\n onUpgraded,\n className,\n}) => {\n const { formatMessage } = useIntl();\n const offer = useSubscriptionOffer(courseId);\n // Per course, so a course change reads as idle and a late response cannot touch another course.\n const [upgrades, setUpgrades] = useState({});\n const inFlight = useRef(new Set());\n const upgradeState = upgrades[courseId] || UPGRADE_STATE.IDLE;\n const setUpgradeFor = (id, state) => setUpgrades((prev) => ({ ...prev, [id]: state }));\n // Cancels the reload poll when this component unmounts or shows another course.\n const pollSignal = useRef(null);\n useEffect(() => {\n const controller = new AbortController();\n pollSignal.current = controller.signal;\n return () => controller.abort();\n }, [courseId]);\n\n if (!offer) {\n return null;\n }\n\n const { purchaseUrl, canPurchase, coursePrice } = offer;\n\n const handleUpgrade = async () => {\n const requestedCourseId = courseId;\n const signal = pollSignal.current;\n // Read before the request, so moving to another unit while it is pending also rules out the reload.\n const startPath = global.location.pathname;\n if (inFlight.current.has(requestedCourseId)) {\n return;\n }\n inFlight.current.add(requestedCourseId);\n setUpgradeFor(requestedCourseId, UPGRADE_STATE.LOADING);\n safeCall(onUpgradeEvent, 'started');\n let nextState;\n let result;\n let error;\n try {\n result = await upgradeEnrollmentWithSubscription(requestedCourseId);\n if (result?.success !== true) {\n throw new SubscriptionUpgradeError('Upgrade was not accepted', { code: result?.code, status: result?.status });\n }\n nextState = UPGRADE_STATE.PENDING;\n } catch (e) {\n error = e;\n nextState = e.code === 'SUBSCRIPTION_NOT_ACTIVE' ? UPGRADE_STATE.NOT_ACTIVE : UPGRADE_STATE.FAILED;\n }\n inFlight.current.delete(requestedCourseId);\n setUpgradeFor(requestedCourseId, nextState);\n if (error) {\n safeCall(onUpgradeEvent, 'failed', error);\n } else {\n safeCall(onUpgradeEvent, 'succeeded');\n safeCall(onUpgraded || (() => reloadWhenUpgraded(requestedCourseId, { signal, startPath })), result);\n }\n };\n\n if (offer.canUpgradeInPlace) {\n if (upgradeState === UPGRADE_STATE.PENDING) {\n return <p className={className} role=\"status\" data-testid=\"subscription-upgrade-pending\">{formatMessage(messages.upgradePending)}</p>;\n }\n return (\n <div className={className}>\n {upgradeState === UPGRADE_STATE.NOT_ACTIVE && (\n <p role=\"alert\" data-testid=\"subscription-upgrade-not-active\">\n {formatMessage(messages.upgradeNotActive)}\n {offer.subscribeUrl && (\n <>\n {' '}\n <Hyperlink destination={offer.subscribeUrl}>{formatMessage(messages.reactivateSubscription)}</Hyperlink>\n </>\n )}\n </p>\n )}\n {upgradeState === UPGRADE_STATE.FAILED && (\n <p role=\"alert\" data-testid=\"subscription-upgrade-failed\">{formatMessage(messages.upgradeFailed)}</p>\n )}\n <Button\n variant=\"brand\"\n block\n onClick={handleUpgrade}\n disabled={upgradeState === UPGRADE_STATE.LOADING}\n data-testid=\"subscription-upgrade-now-button\"\n >\n {formatMessage(upgradeState === UPGRADE_STATE.LOADING ? messages.upgrading : messages.upgradeNow)}\n </Button>\n </div>\n );\n }\n\n if (!offer.hasUpsell) {\n return null;\n }\n\n return (\n <div className={className}>\n {offer.showNotIncluded && (\n <p data-testid=\"subscription-not-included\">{formatMessage(messages.notIncluded)}</p>\n )}\n <div className=\"d-flex\">\n {canPurchase && (\n <Button\n as=\"a\"\n href={purchaseUrl}\n variant={offer.canSubscribe ? 'outline-primary' : 'brand'}\n onClick={onPurchaseClick}\n data-testid=\"subscription-purchase-button\"\n >\n {coursePrice\n ? formatMessage(messages.purchase, { price: coursePrice })\n : formatMessage(messages.purchaseNoPrice)}\n </Button>\n )}\n {offer.canSubscribe && (\n <Button\n as=\"a\"\n href={offer.subscribeUrl}\n variant=\"brand\"\n className=\"ml-2\"\n onClick={onSubscribeClick}\n data-testid=\"subscription-subscribe-button\"\n >\n {formatMessage(messages.subscribe)}\n </Button>\n )}\n </div>\n {canPurchase && offer.purchaseCode && (\n <p className=\"mt-2 mb-0\" data-testid=\"subscription-purchase-code\">\n {formatMessage(upgradeNotificationMessages.discountCodeMessage, {\n code: <span className=\"font-weight-bold\">{offer.purchaseCode}</span>,\n })}\n </p>\n )}\n </div>\n );\n};\n\nSubscriptionUpsell.propTypes = {\n courseId: PropTypes.string.isRequired,\n onSubscribeClick: PropTypes.func,\n onPurchaseClick: PropTypes.func,\n onUpgradeEvent: PropTypes.func,\n // Called after an accepted upgrade. Without it, the page reloads once the LMS has upgraded the enrollment.\n onUpgraded: PropTypes.func,\n className: PropTypes.string,\n};\n\nSubscriptionUpsell.defaultProps = {\n onSubscribeClick: undefined,\n onPurchaseClick: undefined,\n onUpgradeEvent: undefined,\n onUpgraded: undefined,\n className: undefined,\n};\n\nexport default SubscriptionUpsell;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SubscriptionUpsell.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_i18n","_logging","_paragon","_lms_api","_messages","_reloadWhenUpgraded","_useSubscriptionOffer","_messages2","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","UPGRADE_STATE","exports","IDLE","LOADING","PENDING","NOT_ACTIVE","FAILED","safeCall","fn","_len","args","Array","_key","Promise","resolve","catch","logError","error","SubscriptionUpsell","_ref","courseId","onSubscribeClick","onPurchaseClick","onUpgradeEvent","onUpgraded","className","formatMessage","useIntl","offer","useSubscriptionOffer","upgrades","setUpgrades","useState","inFlight","useRef","Set","upgradeState","setUpgradeFor","id","state","prev","pollSignal","useEffect","controller","AbortController","current","signal","abort","purchaseUrl","canPurchase","coursePrice","handleUpgrade","requestedCourseId","startPath","global","location","pathname","add","nextState","result","upgradeEnrollmentWithSubscription","success","SubscriptionUpgradeError","code","status","delete","reloadWhenUpgraded","canUpgradeInPlace","jsx","role","children","messages","upgradePending","jsxs","upgradeNotActive","subscribeUrl","Fragment","Hyperlink","destination","reactivateSubscription","upgradeFailed","Button","variant","block","onClick","disabled","upgrading","upgradeNow","hasUpsell","showNotIncluded","notIncluded","as","href","canSubscribe","purchase","price","purchaseNoPrice","subscribe","purchaseCode","upgradeNotificationMessages","discountCodeMessage","propTypes","PropTypes","string","isRequired","func","defaultProps","undefined","_default"],"sources":["../../src/subscription-upsell/SubscriptionUpsell.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { logError } from '@edx/frontend-platform/logging';\nimport { Button, Hyperlink } from '@openedx/paragon';\n\nimport { SubscriptionUpgradeError, upgradeEnrollmentWithSubscription } from '../data/lms_api';\nimport upgradeNotificationMessages from '../upgrade-notification/messages';\nimport reloadWhenUpgraded from './reloadWhenUpgraded';\nimport useSubscriptionOffer from './useSubscriptionOffer';\nimport messages from './messages';\n\nexport const UPGRADE_STATE = {\n IDLE: 'idle',\n LOADING: 'loading',\n PENDING: 'pending',\n NOT_ACTIVE: 'not_active',\n FAILED: 'failed',\n};\n\n// Host callbacks (analytics, refresh) must never change the outcome of the upgrade request.\nconst safeCall = (fn, ...args) => {\n try {\n Promise.resolve(fn?.(...args)).catch(logError);\n } catch (error) {\n logError(error);\n }\n};\n\n/** Subscribe and Purchase, Purchase only, Upgrade now for subscribers, or the \"not included\" note. */\nconst SubscriptionUpsell = ({\n courseId,\n onSubscribeClick,\n onPurchaseClick,\n onUpgradeEvent,\n onUpgraded,\n className,\n}) => {\n const { formatMessage } = useIntl();\n const offer = useSubscriptionOffer(courseId);\n // Per course, so a course change reads as idle and a late response cannot touch another course.\n const [upgrades, setUpgrades] = useState({});\n const inFlight = useRef(new Set());\n const upgradeState = upgrades[courseId] || UPGRADE_STATE.IDLE;\n const setUpgradeFor = (id, state) => setUpgrades((prev) => ({ ...prev, [id]: state }));\n // Cancels the reload poll when this component unmounts or shows another course.\n const pollSignal = useRef(null);\n useEffect(() => {\n const controller = new AbortController();\n pollSignal.current = controller.signal;\n return () => controller.abort();\n }, [courseId]);\n\n if (!offer) {\n return null;\n }\n\n const { purchaseUrl, canPurchase, coursePrice } = offer;\n\n const handleUpgrade = async () => {\n const requestedCourseId = courseId;\n const signal = pollSignal.current;\n // Read before the request, so moving to another unit while it is pending also rules out the reload.\n const startPath = global.location.pathname;\n if (inFlight.current.has(requestedCourseId)) {\n return;\n }\n inFlight.current.add(requestedCourseId);\n setUpgradeFor(requestedCourseId, UPGRADE_STATE.LOADING);\n safeCall(onUpgradeEvent, 'started');\n let nextState;\n let result;\n let error;\n try {\n result = await upgradeEnrollmentWithSubscription(requestedCourseId);\n if (result?.success !== true) {\n throw new SubscriptionUpgradeError('Upgrade was not accepted', { code: result?.code, status: result?.status });\n }\n nextState = UPGRADE_STATE.PENDING;\n } catch (e) {\n error = e;\n nextState = e.code === 'SUBSCRIPTION_NOT_ACTIVE' ? UPGRADE_STATE.NOT_ACTIVE : UPGRADE_STATE.FAILED;\n }\n inFlight.current.delete(requestedCourseId);\n setUpgradeFor(requestedCourseId, nextState);\n if (error) {\n safeCall(onUpgradeEvent, 'failed', error);\n } else {\n safeCall(onUpgradeEvent, 'succeeded', result);\n safeCall(onUpgraded || (() => reloadWhenUpgraded(requestedCourseId, { signal, startPath })), result);\n }\n };\n\n if (offer.canUpgradeInPlace) {\n if (upgradeState === UPGRADE_STATE.PENDING) {\n return <p className={className} role=\"status\" data-testid=\"subscription-upgrade-pending\">{formatMessage(messages.upgradePending)}</p>;\n }\n return (\n <div className={className}>\n {upgradeState === UPGRADE_STATE.NOT_ACTIVE && (\n <p role=\"alert\" data-testid=\"subscription-upgrade-not-active\">\n {formatMessage(messages.upgradeNotActive)}\n {offer.subscribeUrl && (\n <>\n {' '}\n <Hyperlink destination={offer.subscribeUrl}>{formatMessage(messages.reactivateSubscription)}</Hyperlink>\n </>\n )}\n </p>\n )}\n {upgradeState === UPGRADE_STATE.FAILED && (\n <p role=\"alert\" data-testid=\"subscription-upgrade-failed\">{formatMessage(messages.upgradeFailed)}</p>\n )}\n <Button\n variant=\"brand\"\n block\n onClick={handleUpgrade}\n disabled={upgradeState === UPGRADE_STATE.LOADING}\n data-testid=\"subscription-upgrade-now-button\"\n >\n {formatMessage(upgradeState === UPGRADE_STATE.LOADING ? messages.upgrading : messages.upgradeNow)}\n </Button>\n </div>\n );\n }\n\n if (!offer.hasUpsell) {\n return null;\n }\n\n return (\n <div className={className}>\n {offer.showNotIncluded && (\n <p data-testid=\"subscription-not-included\">{formatMessage(messages.notIncluded)}</p>\n )}\n <div className=\"d-flex\">\n {canPurchase && (\n <Button\n as=\"a\"\n href={purchaseUrl}\n variant={offer.canSubscribe ? 'outline-primary' : 'brand'}\n onClick={onPurchaseClick}\n data-testid=\"subscription-purchase-button\"\n >\n {coursePrice\n ? formatMessage(messages.purchase, { price: coursePrice })\n : formatMessage(messages.purchaseNoPrice)}\n </Button>\n )}\n {offer.canSubscribe && (\n <Button\n as=\"a\"\n href={offer.subscribeUrl}\n variant=\"brand\"\n className=\"ml-2\"\n onClick={onSubscribeClick}\n data-testid=\"subscription-subscribe-button\"\n >\n {formatMessage(messages.subscribe)}\n </Button>\n )}\n </div>\n {canPurchase && offer.purchaseCode && (\n <p className=\"mt-2 mb-0\" data-testid=\"subscription-purchase-code\">\n {formatMessage(upgradeNotificationMessages.discountCodeMessage, {\n code: <span className=\"font-weight-bold\">{offer.purchaseCode}</span>,\n })}\n </p>\n )}\n </div>\n );\n};\n\nSubscriptionUpsell.propTypes = {\n courseId: PropTypes.string.isRequired,\n onSubscribeClick: PropTypes.func,\n onPurchaseClick: PropTypes.func,\n onUpgradeEvent: PropTypes.func,\n // Called after an accepted upgrade. Without it, the page reloads once the LMS has upgraded the enrollment.\n onUpgraded: PropTypes.func,\n className: PropTypes.string,\n};\n\nSubscriptionUpsell.defaultProps = {\n onSubscribeClick: undefined,\n onPurchaseClick: undefined,\n onUpgradeEvent: undefined,\n onUpgraded: undefined,\n className: undefined,\n};\n\nexport default SubscriptionUpsell;\n"],"mappings":"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","ignoreList":[]}
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "SUBSCRIPTION_STATUS", {
15
15
  return _useSubscriptionOffer.SUBSCRIPTION_STATUS;
16
16
  }
17
17
  });
18
+ Object.defineProperty(exports, "SUBSCRIPTION_UPGRADE_EVENTS", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _track.SUBSCRIPTION_UPGRADE_EVENTS;
22
+ }
23
+ });
18
24
  Object.defineProperty(exports, "SubscriptionBenefitsModal", {
19
25
  enumerable: true,
20
26
  get: function () {
@@ -45,6 +51,12 @@ Object.defineProperty(exports, "UPGRADE_STATE", {
45
51
  return _SubscriptionUpsell.UPGRADE_STATE;
46
52
  }
47
53
  });
54
+ Object.defineProperty(exports, "logSubscriptionUpgrade", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _track.logSubscriptionUpgrade;
58
+ }
59
+ });
48
60
  Object.defineProperty(exports, "useSubscriptionOffer", {
49
61
  enumerable: true,
50
62
  get: function () {
@@ -56,6 +68,7 @@ var _SubscriptionUpsell = _interopRequireWildcard(require("./SubscriptionUpsell"
56
68
  var _SubscriptionUpgradeCard = _interopRequireDefault(require("./SubscriptionUpgradeCard"));
57
69
  var _SubscriptionBenefitsModal = _interopRequireWildcard(require("./SubscriptionBenefitsModal"));
58
70
  var _SubscriptionComparisonModal = _interopRequireDefault(require("./SubscriptionComparisonModal"));
71
+ var _track = require("./track");
59
72
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
60
73
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
61
74
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_useSubscriptionOffer","_interopRequireWildcard","require","_SubscriptionUpsell","_SubscriptionUpgradeCard","_interopRequireDefault","_SubscriptionBenefitsModal","_SubscriptionComparisonModal","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor"],"sources":["../../src/subscription-upsell/index.jsx"],"sourcesContent":["export { default as useSubscriptionOffer, SUBSCRIPTION_STATUS } from './useSubscriptionOffer';\nexport { default as SubscriptionUpsell, UPGRADE_STATE } from './SubscriptionUpsell';\nexport { default as SubscriptionUpgradeCard } from './SubscriptionUpgradeCard';\nexport { default as SubscriptionBenefitsModal, BENEFITS_MODAL_VARIANT } from './SubscriptionBenefitsModal';\nexport { default as SubscriptionComparisonModal } from './SubscriptionComparisonModal';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,qBAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAF,uBAAA,CAAAC,OAAA;AACA,IAAAE,wBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,0BAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,4BAAA,GAAAF,sBAAA,CAAAH,OAAA;AAAuF,SAAAG,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAP,wBAAAO,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAX,uBAAA,YAAAA,CAAAO,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_useSubscriptionOffer","_interopRequireWildcard","require","_SubscriptionUpsell","_SubscriptionUpgradeCard","_interopRequireDefault","_SubscriptionBenefitsModal","_SubscriptionComparisonModal","_track","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor"],"sources":["../../src/subscription-upsell/index.jsx"],"sourcesContent":["export { default as useSubscriptionOffer, SUBSCRIPTION_STATUS } from './useSubscriptionOffer';\nexport { default as SubscriptionUpsell, UPGRADE_STATE } from './SubscriptionUpsell';\nexport { default as SubscriptionUpgradeCard } from './SubscriptionUpgradeCard';\nexport { default as SubscriptionBenefitsModal, BENEFITS_MODAL_VARIANT } from './SubscriptionBenefitsModal';\nexport { default as SubscriptionComparisonModal } from './SubscriptionComparisonModal';\nexport { logSubscriptionUpgrade, SUBSCRIPTION_UPGRADE_EVENTS } from './track';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,qBAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAF,uBAAA,CAAAC,OAAA;AACA,IAAAE,wBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,0BAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,4BAAA,GAAAF,sBAAA,CAAAH,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AAA8E,SAAAG,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAR,wBAAAQ,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAZ,uBAAA,YAAAA,CAAAQ,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.logSubscriptionUpgrade = exports.SUBSCRIPTION_UPGRADE_EVENTS = void 0;
7
+ var _analytics = require("@edx/frontend-platform/analytics");
8
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
11
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
12
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
+ // Keyed by the SubscriptionUpsell onUpgradeEvent stage. The frontend only sees the request and the
14
+ // response; the enrollment flips later and the LMS reports that itself (edx.course.enrollment.mode_changed).
15
+ const SUBSCRIPTION_UPGRADE_EVENTS = exports.SUBSCRIPTION_UPGRADE_EVENTS = {
16
+ started: 'edx.bi.ecommerce.subscription_upgrade_requested',
17
+ succeeded: 'edx.bi.ecommerce.subscription_upgrade_accepted',
18
+ failed: 'edx.bi.ecommerce.subscription_upgrade_rejected'
19
+ };
20
+
21
+ /** An onUpgradeEvent handler for one placement: logs every stage and fires the conversion on success. */
22
+ const logSubscriptionUpgrade = (_ref, conversion) => {
23
+ let {
24
+ org,
25
+ courseId,
26
+ pageName,
27
+ placement,
28
+ linkName
29
+ } = _ref;
30
+ return (stage, detail) => {
31
+ if (!SUBSCRIPTION_UPGRADE_EVENTS[stage]) {
32
+ throw new Error(`Unknown subscription upgrade stage: ${stage}`);
33
+ }
34
+ (0, _analytics.sendTrackEvent)(SUBSCRIPTION_UPGRADE_EVENTS[stage], _objectSpread(_objectSpread({
35
+ org_key: org,
36
+ courserun_key: courseId,
37
+ pageName,
38
+ placement,
39
+ linkCategory: 'subscription',
40
+ linkName,
41
+ // Same tag as the sidebar card's events, so one filter finds every subscription-card event.
42
+ variant: 'subscription',
43
+ linkType: 'button'
44
+ }, stage === 'succeeded' && {
45
+ upgrade_status: detail?.status ?? null
46
+ }), stage === 'failed' && {
47
+ error_code: detail?.code ?? null,
48
+ // Only an HTTP status; a 200 reply with success: false carries the body's string status.
49
+ error_status: Number.isInteger(detail?.status) ? detail.status : null
50
+ }));
51
+ if (stage === 'succeeded') {
52
+ conversion('Upgraded');
53
+ }
54
+ };
55
+ };
56
+ exports.logSubscriptionUpgrade = logSubscriptionUpgrade;
57
+ //# sourceMappingURL=track.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track.js","names":["_analytics","require","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","SUBSCRIPTION_UPGRADE_EVENTS","exports","started","succeeded","failed","logSubscriptionUpgrade","_ref","conversion","org","courseId","pageName","placement","linkName","stage","detail","Error","sendTrackEvent","org_key","courserun_key","linkCategory","variant","linkType","upgrade_status","status","error_code","code","error_status","isInteger"],"sources":["../../src/subscription-upsell/track.js"],"sourcesContent":["import { sendTrackEvent } from '@edx/frontend-platform/analytics';\n\n// Keyed by the SubscriptionUpsell onUpgradeEvent stage. The frontend only sees the request and the\n// response; the enrollment flips later and the LMS reports that itself (edx.course.enrollment.mode_changed).\nexport const SUBSCRIPTION_UPGRADE_EVENTS = {\n started: 'edx.bi.ecommerce.subscription_upgrade_requested',\n succeeded: 'edx.bi.ecommerce.subscription_upgrade_accepted',\n failed: 'edx.bi.ecommerce.subscription_upgrade_rejected',\n};\n\n/** An onUpgradeEvent handler for one placement: logs every stage and fires the conversion on success. */\nexport const logSubscriptionUpgrade = ({\n org, courseId, pageName, placement, linkName,\n}, conversion) => (stage, detail) => {\n if (!SUBSCRIPTION_UPGRADE_EVENTS[stage]) {\n throw new Error(`Unknown subscription upgrade stage: ${stage}`);\n }\n sendTrackEvent(SUBSCRIPTION_UPGRADE_EVENTS[stage], {\n org_key: org,\n courserun_key: courseId,\n pageName,\n placement,\n linkCategory: 'subscription',\n linkName,\n // Same tag as the sidebar card's events, so one filter finds every subscription-card event.\n variant: 'subscription',\n linkType: 'button',\n ...(stage === 'succeeded' && { upgrade_status: detail?.status ?? null }),\n ...(stage === 'failed' && {\n error_code: detail?.code ?? null,\n // Only an HTTP status; a 200 reply with success: false carries the body's string status.\n error_status: Number.isInteger(detail?.status) ? detail.status : null,\n }),\n });\n if (stage === 'succeeded') { conversion('Upgraded'); }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAkE,SAAAC,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAgB,gBAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAmB,cAAA,CAAAnB,CAAA,MAAAD,CAAA,GAAAG,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,IAAAoB,KAAA,EAAAnB,CAAA,EAAAO,UAAA,MAAAa,YAAA,MAAAC,QAAA,UAAAvB,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAoB,eAAAlB,CAAA,QAAAsB,CAAA,GAAAC,YAAA,CAAAvB,CAAA,uCAAAsB,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAvB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAwB,MAAA,CAAAC,WAAA,kBAAA3B,CAAA,QAAAwB,CAAA,GAAAxB,CAAA,CAAA4B,IAAA,CAAA1B,CAAA,EAAAD,CAAA,uCAAAuB,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAA5B,CAAA,GAAA6B,MAAA,GAAAC,MAAA,EAAA7B,CAAA;AAElE;AACA;AACO,MAAM8B,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,GAAG;EACzCE,OAAO,EAAE,iDAAiD;EAC1DC,SAAS,EAAE,gDAAgD;EAC3DC,MAAM,EAAE;AACV,CAAC;;AAED;AACO,MAAMC,sBAAsB,GAAGA,CAAAC,IAAA,EAEnCC,UAAU;EAAA,IAF0B;IACrCC,GAAG;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EACtC,CAAC,GAAAN,IAAA;EAAA,OAAiB,CAACO,KAAK,EAAEC,MAAM,KAAK;IACnC,IAAI,CAACd,2BAA2B,CAACa,KAAK,CAAC,EAAE;MACvC,MAAM,IAAIE,KAAK,CAAC,uCAAuCF,KAAK,EAAE,CAAC;IACjE;IACA,IAAAG,yBAAc,EAAChB,2BAA2B,CAACa,KAAK,CAAC,EAAAjC,aAAA,CAAAA,aAAA;MAC/CqC,OAAO,EAAET,GAAG;MACZU,aAAa,EAAET,QAAQ;MACvBC,QAAQ;MACRC,SAAS;MACTQ,YAAY,EAAE,cAAc;MAC5BP,QAAQ;MACR;MACAQ,OAAO,EAAE,cAAc;MACvBC,QAAQ,EAAE;IAAQ,GACdR,KAAK,KAAK,WAAW,IAAI;MAAES,cAAc,EAAER,MAAM,EAAES,MAAM,IAAI;IAAK,CAAC,GACnEV,KAAK,KAAK,QAAQ,IAAI;MACxBW,UAAU,EAAEV,MAAM,EAAEW,IAAI,IAAI,IAAI;MAChC;MACAC,YAAY,EAAE3B,MAAM,CAAC4B,SAAS,CAACb,MAAM,EAAES,MAAM,CAAC,GAAGT,MAAM,CAACS,MAAM,GAAG;IACnE,CAAC,CACF,CAAC;IACF,IAAIV,KAAK,KAAK,WAAW,EAAE;MAAEN,UAAU,CAAC,UAAU,CAAC;IAAE;EACvD,CAAC;AAAA;AAACN,OAAA,CAAAI,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -154,7 +154,13 @@ const UpgradeNotification = _ref => {
154
154
  banner: banner,
155
155
  onSubscribeClick: logSubscribeClick,
156
156
  onPurchaseClick: logUpgradeClick,
157
- onUpgradeEvent: stage => stage === 'succeeded' && logUpgradeClick(),
157
+ onUpgradeEvent: (0, _subscriptionUpsell.logSubscriptionUpgrade)({
158
+ org,
159
+ courseId,
160
+ pageName: upsellPageName,
161
+ placement: 'sidebar_card',
162
+ linkName: `${upsellPageName}_upgrade_now`
163
+ }, conversion),
158
164
  onClose: toggleSidebar
159
165
  });
160
166
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UpgradeNotification.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_classnames","_i18n","_analytics","_paragon","_icons","_modelStore","_data","_subscriptionUpsell","_certificatePreview","_generic","_utils","_messages","_cohesion","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","SUBSCRIPTION_CARD_PLACEMENTS","UpgradeNotification","_ref","id","courseId","model","setNotificationCurrentState","toggleSidebar","pluginLocationId","formatMessage","useIntl","org","userTimezone","verifiedMode","useModel","marketingUrl","learningAssistantEnabled","accessExpiration","datesBannerInfo","offer","timeOffsetMillis","conversion","useCohesion","subscriptionOffer","useSubscriptionOffer","dateNow","Date","now","timezoneFormatArgs","timeZone","correctedTime","accessExpirationDate","upgradeDeadline","pastExpirationDeadline","shouldDisplayBorder","includes","isSubscriptionCardPlacement","some","placement","showSubscriptionCard","hasUpsell","upsellPageName","getUpsellPageName","setupgradeNotificationCurrentState","isFBE","contentTypeGatingEnabled","eventProperties","org_key","courserun_key","variant","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logUpgradeClick","location","linkCategory","linkName","linkType","pageName","logClickPastExpiration","logSubscribeClick","banner","hoursToAccessExpiration","Math","floor","jsx","ExpirationCountdown","hoursToExpiration","type","AccessExpirationDateBanner","SubscriptionUpgradeCard","withBorder","onSubscribeClick","onPurchaseClick","onUpgradeEvent","stage","onClose","upgradeNotificationHeaderText","expirationBanner","callToActionButton","offerMessage","offerCountdown","upsellMessage","hoursToDiscountExpiration","expirationDate","messages","accessExpirationHeader","accessExpirationUrgentHeader","PAGE_NAMES","PROGRESS","UpsellFBESoonCardContent","accessExpirationPastHeader","PastExpirationDateBanner","PastExpirationCardContent","Button","onClick","href","block","children","pastExpirationCallToActionLabel","upgradeUrl","upgradeNowButton","price","discountedPrice","currencySymbol","jsxs","className","firstTimeLearnerOffer","percentage","promoCodeMessage","code","classNames","pursueCertificateMessage","IconButton","src","Close","size","iconAs","Icon","alt","closeAlt","bgColor","UpsellTable","inlineHeader","propTypes","PropTypes","string","isRequired","func","defaultProps","_default","exports"],"sources":["../../src/upgrade-notification/UpgradeNotification.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { Button, Icon, IconButton } from '@openedx/paragon';\nimport { Close } from '@openedx/paragon/icons';\n\nimport { useModel } from '@src/generic/model-store';\n\nimport { PAGE_NAMES } from '../data';\nimport { SubscriptionUpgradeCard, useSubscriptionOffer } from '../subscription-upsell';\nimport CertificatePreview from './certificate-preview';\nimport {\n ExpirationCountdown,\n AccessExpirationDateBanner,\n PastExpirationDateBanner,\n PastExpirationCardContent,\n UpsellFBESoonCardContent,\n UpsellTable,\n} from '../generic';\nimport getUpsellPageName from './utils';\nimport messages from './messages';\nimport { useCohesion } from '../cohesion';\nimport './UpgradeNotification.scss';\n\n// Placements that show the subscription card: course home and the courseware sidebar\n// (tray and widget). The Progress page keeps the current card.\nconst SUBSCRIPTION_CARD_PLACEMENTS = ['outline', 'notification_tray', 'notification_widget'];\n\nconst UpgradeNotification = ({\n id,\n courseId,\n model,\n setNotificationCurrentState,\n toggleSidebar,\n}) => {\n const pluginLocationId = id;\n const { formatMessage } = useIntl();\n\n const {\n org,\n userTimezone,\n verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n marketingUrl,\n learningAssistantEnabled,\n } = useModel('coursewareMeta', courseId);\n\n const {\n accessExpiration,\n datesBannerInfo,\n offer,\n timeOffsetMillis,\n } = useModel(model, courseId);\n\n const { conversion } = useCohesion(courseId);\n const subscriptionOffer = useSubscriptionOffer(courseId);\n\n const dateNow = Date.now();\n const timezoneFormatArgs = userTimezone ? { timeZone: userTimezone } : {};\n const correctedTime = new Date(dateNow + timeOffsetMillis);\n const accessExpirationDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n // Server time, so this agrees with the countdown and the FBE branches below.\n const pastExpirationDeadline = accessExpiration ? correctedTime > accessExpirationDate : false;\n const shouldDisplayBorder = pluginLocationId.includes('outline');\n const isSubscriptionCardPlacement = SUBSCRIPTION_CARD_PLACEMENTS.some(\n (placement) => pluginLocationId.includes(placement),\n );\n // Without an offer or anything in it to show, past the upgrade deadline, and on the Progress page,\n // today's card renders.\n const showSubscriptionCard = isSubscriptionCardPlacement && !pastExpirationDeadline && !!subscriptionOffer?.hasUpsell;\n const upsellPageName = getUpsellPageName({ id: pluginLocationId });\n const setupgradeNotificationCurrentState = setNotificationCurrentState;\n const isFBE = !!accessExpiration && !!datesBannerInfo?.contentTypeGatingEnabled;\n\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n // Tags the placements that switched to the subscription card, so reports can split them from today's card.\n ...(showSubscriptionCard && { variant: 'subscription' }),\n };\n\n const promotionEventProperties = {\n creative: 'sidebarupsell',\n name: 'In-Course Verification Prompt',\n position: 'sidebar-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!verifiedMode) {\n return null;\n }\n\n const logUpgradeClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'sidebar-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n\n conversion('Upgraded');\n };\n\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_notification.past_expiration.button_clicked', {\n ...eventProperties,\n linkCategory: 'upgrade_notification',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const logSubscribeClick = () => {\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: 'subscription',\n linkName: `${upsellPageName}_subscribe`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n conversion('Subscribe Clicked'); // on the click, before checkout\n };\n\n if (showSubscriptionCard) { // the card handles every offer state itself\n let banner;\n if (isFBE) { // content-gated learners keep the access expiration warning and its sidebar dot stages\n const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);\n banner = hoursToAccessExpiration < (7 * 24) ? (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n ) : (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n return (\n <SubscriptionUpgradeCard\n courseId={courseId}\n withBorder={shouldDisplayBorder}\n banner={banner}\n onSubscribeClick={logSubscribeClick}\n onPurchaseClick={logUpgradeClick}\n onUpgradeEvent={(stage) => stage === 'succeeded' && logUpgradeClick()}\n onClose={toggleSidebar}\n />\n );\n }\n\n /*\n The card follows the Red Ventures sidebar card it replaces (LP-1471). There are 5 parts that change:\n offerMessage, with offerCountdown in it\n upgradeNotificationHeaderText\n expirationBanner\n upsellMessage, which replaces the comparison table in the states that explain the deadline instead\n callToActionButton\n */\n let upgradeNotificationHeaderText;\n let expirationBanner;\n let callToActionButton;\n let offerMessage;\n let offerCountdown;\n let upsellMessage;\n\n if (isFBE) {\n const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);\n\n if (hoursToAccessExpiration >= (7 * 24)) {\n if (offer) { // countdown to the first purchase discount, shown with the discount in offerMessage\n const hoursToDiscountExpiration = Math.floor((new Date(offer.expirationDate) - correctedTime) / 1000 / 60 / 60);\n offerCountdown = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToDiscountExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"offer\"\n />\n );\n } else {\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationHeader);\n expirationBanner = (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n } else if (hoursToAccessExpiration < (7 * 24) && hoursToAccessExpiration >= 0) {\n // more urgent messaging if there's less than 7 days left to access expiration\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationUrgentHeader);\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n );\n if (upsellPageName !== PAGE_NAMES.PROGRESS) {\n upsellMessage = (\n <UpsellFBESoonCardContent\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n />\n );\n }\n } else { // access expiration deadline has passed\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationPastHeader);\n expirationBanner = (\n <PastExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n upsellMessage = (\n <PastExpirationCardContent />\n );\n }\n }\n\n if (pastExpirationDeadline) {\n callToActionButton = (\n <Button\n variant=\"brand\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n block\n >\n {formatMessage(messages.pastExpirationCallToActionLabel)}\n </Button>\n );\n } else {\n // Prefer the offer's url, as the host app's UpgradeButton does, in case it ever differs.\n callToActionButton = (\n <Button\n variant=\"brand\"\n href={offer ? offer.upgradeUrl : verifiedMode.upgradeUrl}\n onClick={logUpgradeClick}\n block\n data-testid=\"upgrade-button\"\n >\n {formatMessage(messages.upgradeNowButton, {\n price: offer ? offer.discountedPrice : `${verifiedMode.currencySymbol}${verifiedMode.price}`,\n })}\n </Button>\n );\n }\n\n // The first purchase discount and its code, above the comparison table. Past the upgrade deadline the\n // button goes to the course details instead, where the code can't be used.\n if (offer && !pastExpirationDeadline) {\n offerMessage = (\n <div className=\"mb-4\">\n <h3 className=\"upgrade-notification-subheader mx-4 mb-2\">\n {formatMessage(messages.firstTimeLearnerOffer, { percentage: offer.percentage })}\n </h3>\n {offerCountdown && <div className=\"mb-2\">{offerCountdown}</div>}\n <p className=\"font-weight-bold mx-4 mb-0\">\n {formatMessage(messages.promoCodeMessage, { code: offer.code })}\n </p>\n </div>\n );\n }\n\n return (\n <section className={classNames('upgrade-notification verified-upgrade-card small', { 'mb-4': shouldDisplayBorder })}>\n <div id=\"courseHome-upgradeNotification\">\n <h2\n className={classNames('upgrade-notification-header', {\n 'd-flex align-items-center mr-2 ml-4 my-1.5 font-size-18': !!toggleSidebar,\n 'm-4': !toggleSidebar,\n })}\n id=\"outline-sidebar-upgrade-header\"\n >\n {formatMessage(messages.pursueCertificateMessage)}\n {!!toggleSidebar && (\n <div className=\"d-inline-flex ml-auto\">\n <IconButton\n src={Close}\n size=\"sm\"\n iconAs={Icon}\n onClick={toggleSidebar}\n className=\"icon-hover\"\n alt={formatMessage(messages.closeAlt)}\n />\n </div>\n )}\n </h2>\n <CertificatePreview courseId={courseId} bgColor=\"bg-white\" />\n {offerMessage}\n {upgradeNotificationHeaderText && (\n <h3 className=\"upgrade-notification-subheader ml-4\">\n {upgradeNotificationHeaderText}\n </h3>\n )}\n {expirationBanner}\n <div className=\"upgrade-notification-message\">\n {upsellMessage || <UpsellTable {...{ isFBE, learningAssistantEnabled }} inlineHeader />}\n </div>\n {/* The table's bottom padding spaces the button; the messages that replace it don't. */}\n <div className={classNames('upgrade-notification-button mx-4 mb-4', { 'mt-4': !!upsellMessage })}>\n {callToActionButton}\n </div>\n </div>\n </section>\n );\n};\n\nUpgradeNotification.propTypes = {\n id: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n model: PropTypes.string,\n setNotificationCurrentState: PropTypes.func,\n toggleSidebar: PropTypes.func,\n};\n\nUpgradeNotification.defaultProps = {\n setNotificationCurrentState: null,\n toggleSidebar: null,\n model: 'outline',\n};\n\nexport default UpgradeNotification;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"UpgradeNotification.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_classnames","_i18n","_analytics","_paragon","_icons","_modelStore","_data","_subscriptionUpsell","_certificatePreview","_generic","_utils","_messages","_cohesion","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","SUBSCRIPTION_CARD_PLACEMENTS","UpgradeNotification","_ref","id","courseId","model","setNotificationCurrentState","toggleSidebar","pluginLocationId","formatMessage","useIntl","org","userTimezone","verifiedMode","useModel","marketingUrl","learningAssistantEnabled","accessExpiration","datesBannerInfo","offer","timeOffsetMillis","conversion","useCohesion","subscriptionOffer","useSubscriptionOffer","dateNow","Date","now","timezoneFormatArgs","timeZone","correctedTime","accessExpirationDate","upgradeDeadline","pastExpirationDeadline","shouldDisplayBorder","includes","isSubscriptionCardPlacement","some","placement","showSubscriptionCard","hasUpsell","upsellPageName","getUpsellPageName","setupgradeNotificationCurrentState","isFBE","contentTypeGatingEnabled","eventProperties","org_key","courserun_key","variant","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logUpgradeClick","location","linkCategory","linkName","linkType","pageName","logClickPastExpiration","logSubscribeClick","banner","hoursToAccessExpiration","Math","floor","jsx","ExpirationCountdown","hoursToExpiration","type","AccessExpirationDateBanner","SubscriptionUpgradeCard","withBorder","onSubscribeClick","onPurchaseClick","onUpgradeEvent","logSubscriptionUpgrade","onClose","upgradeNotificationHeaderText","expirationBanner","callToActionButton","offerMessage","offerCountdown","upsellMessage","hoursToDiscountExpiration","expirationDate","messages","accessExpirationHeader","accessExpirationUrgentHeader","PAGE_NAMES","PROGRESS","UpsellFBESoonCardContent","accessExpirationPastHeader","PastExpirationDateBanner","PastExpirationCardContent","Button","onClick","href","block","children","pastExpirationCallToActionLabel","upgradeUrl","upgradeNowButton","price","discountedPrice","currencySymbol","jsxs","className","firstTimeLearnerOffer","percentage","promoCodeMessage","code","classNames","pursueCertificateMessage","IconButton","src","Close","size","iconAs","Icon","alt","closeAlt","bgColor","UpsellTable","inlineHeader","propTypes","PropTypes","string","isRequired","func","defaultProps","_default","exports"],"sources":["../../src/upgrade-notification/UpgradeNotification.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { Button, Icon, IconButton } from '@openedx/paragon';\nimport { Close } from '@openedx/paragon/icons';\n\nimport { useModel } from '@src/generic/model-store';\n\nimport { PAGE_NAMES } from '../data';\nimport { SubscriptionUpgradeCard, logSubscriptionUpgrade, useSubscriptionOffer } from '../subscription-upsell';\nimport CertificatePreview from './certificate-preview';\nimport {\n ExpirationCountdown,\n AccessExpirationDateBanner,\n PastExpirationDateBanner,\n PastExpirationCardContent,\n UpsellFBESoonCardContent,\n UpsellTable,\n} from '../generic';\nimport getUpsellPageName from './utils';\nimport messages from './messages';\nimport { useCohesion } from '../cohesion';\nimport './UpgradeNotification.scss';\n\n// Placements that show the subscription card: course home and the courseware sidebar\n// (tray and widget). The Progress page keeps the current card.\nconst SUBSCRIPTION_CARD_PLACEMENTS = ['outline', 'notification_tray', 'notification_widget'];\n\nconst UpgradeNotification = ({\n id,\n courseId,\n model,\n setNotificationCurrentState,\n toggleSidebar,\n}) => {\n const pluginLocationId = id;\n const { formatMessage } = useIntl();\n\n const {\n org,\n userTimezone,\n verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n marketingUrl,\n learningAssistantEnabled,\n } = useModel('coursewareMeta', courseId);\n\n const {\n accessExpiration,\n datesBannerInfo,\n offer,\n timeOffsetMillis,\n } = useModel(model, courseId);\n\n const { conversion } = useCohesion(courseId);\n const subscriptionOffer = useSubscriptionOffer(courseId);\n\n const dateNow = Date.now();\n const timezoneFormatArgs = userTimezone ? { timeZone: userTimezone } : {};\n const correctedTime = new Date(dateNow + timeOffsetMillis);\n const accessExpirationDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n // Server time, so this agrees with the countdown and the FBE branches below.\n const pastExpirationDeadline = accessExpiration ? correctedTime > accessExpirationDate : false;\n const shouldDisplayBorder = pluginLocationId.includes('outline');\n const isSubscriptionCardPlacement = SUBSCRIPTION_CARD_PLACEMENTS.some(\n (placement) => pluginLocationId.includes(placement),\n );\n // Without an offer or anything in it to show, past the upgrade deadline, and on the Progress page,\n // today's card renders.\n const showSubscriptionCard = isSubscriptionCardPlacement && !pastExpirationDeadline && !!subscriptionOffer?.hasUpsell;\n const upsellPageName = getUpsellPageName({ id: pluginLocationId });\n const setupgradeNotificationCurrentState = setNotificationCurrentState;\n const isFBE = !!accessExpiration && !!datesBannerInfo?.contentTypeGatingEnabled;\n\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n // Tags the placements that switched to the subscription card, so reports can split them from today's card.\n ...(showSubscriptionCard && { variant: 'subscription' }),\n };\n\n const promotionEventProperties = {\n creative: 'sidebarupsell',\n name: 'In-Course Verification Prompt',\n position: 'sidebar-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!verifiedMode) {\n return null;\n }\n\n const logUpgradeClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'sidebar-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n\n conversion('Upgraded');\n };\n\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_notification.past_expiration.button_clicked', {\n ...eventProperties,\n linkCategory: 'upgrade_notification',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const logSubscribeClick = () => {\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: 'subscription',\n linkName: `${upsellPageName}_subscribe`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n conversion('Subscribe Clicked'); // on the click, before checkout\n };\n\n if (showSubscriptionCard) { // the card handles every offer state itself\n let banner;\n if (isFBE) { // content-gated learners keep the access expiration warning and its sidebar dot stages\n const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);\n banner = hoursToAccessExpiration < (7 * 24) ? (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n ) : (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n return (\n <SubscriptionUpgradeCard\n courseId={courseId}\n withBorder={shouldDisplayBorder}\n banner={banner}\n onSubscribeClick={logSubscribeClick}\n onPurchaseClick={logUpgradeClick}\n onUpgradeEvent={logSubscriptionUpgrade({\n org, courseId, pageName: upsellPageName, placement: 'sidebar_card', linkName: `${upsellPageName}_upgrade_now`,\n }, conversion)}\n onClose={toggleSidebar}\n />\n );\n }\n\n /*\n The card follows the Red Ventures sidebar card it replaces (LP-1471). There are 5 parts that change:\n offerMessage, with offerCountdown in it\n upgradeNotificationHeaderText\n expirationBanner\n upsellMessage, which replaces the comparison table in the states that explain the deadline instead\n callToActionButton\n */\n let upgradeNotificationHeaderText;\n let expirationBanner;\n let callToActionButton;\n let offerMessage;\n let offerCountdown;\n let upsellMessage;\n\n if (isFBE) {\n const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);\n\n if (hoursToAccessExpiration >= (7 * 24)) {\n if (offer) { // countdown to the first purchase discount, shown with the discount in offerMessage\n const hoursToDiscountExpiration = Math.floor((new Date(offer.expirationDate) - correctedTime) / 1000 / 60 / 60);\n offerCountdown = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToDiscountExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"offer\"\n />\n );\n } else {\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationHeader);\n expirationBanner = (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n } else if (hoursToAccessExpiration < (7 * 24) && hoursToAccessExpiration >= 0) {\n // more urgent messaging if there's less than 7 days left to access expiration\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationUrgentHeader);\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n );\n if (upsellPageName !== PAGE_NAMES.PROGRESS) {\n upsellMessage = (\n <UpsellFBESoonCardContent\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n />\n );\n }\n } else { // access expiration deadline has passed\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationPastHeader);\n expirationBanner = (\n <PastExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n upsellMessage = (\n <PastExpirationCardContent />\n );\n }\n }\n\n if (pastExpirationDeadline) {\n callToActionButton = (\n <Button\n variant=\"brand\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n block\n >\n {formatMessage(messages.pastExpirationCallToActionLabel)}\n </Button>\n );\n } else {\n // Prefer the offer's url, as the host app's UpgradeButton does, in case it ever differs.\n callToActionButton = (\n <Button\n variant=\"brand\"\n href={offer ? offer.upgradeUrl : verifiedMode.upgradeUrl}\n onClick={logUpgradeClick}\n block\n data-testid=\"upgrade-button\"\n >\n {formatMessage(messages.upgradeNowButton, {\n price: offer ? offer.discountedPrice : `${verifiedMode.currencySymbol}${verifiedMode.price}`,\n })}\n </Button>\n );\n }\n\n // The first purchase discount and its code, above the comparison table. Past the upgrade deadline the\n // button goes to the course details instead, where the code can't be used.\n if (offer && !pastExpirationDeadline) {\n offerMessage = (\n <div className=\"mb-4\">\n <h3 className=\"upgrade-notification-subheader mx-4 mb-2\">\n {formatMessage(messages.firstTimeLearnerOffer, { percentage: offer.percentage })}\n </h3>\n {offerCountdown && <div className=\"mb-2\">{offerCountdown}</div>}\n <p className=\"font-weight-bold mx-4 mb-0\">\n {formatMessage(messages.promoCodeMessage, { code: offer.code })}\n </p>\n </div>\n );\n }\n\n return (\n <section className={classNames('upgrade-notification verified-upgrade-card small', { 'mb-4': shouldDisplayBorder })}>\n <div id=\"courseHome-upgradeNotification\">\n <h2\n className={classNames('upgrade-notification-header', {\n 'd-flex align-items-center mr-2 ml-4 my-1.5 font-size-18': !!toggleSidebar,\n 'm-4': !toggleSidebar,\n })}\n id=\"outline-sidebar-upgrade-header\"\n >\n {formatMessage(messages.pursueCertificateMessage)}\n {!!toggleSidebar && (\n <div className=\"d-inline-flex ml-auto\">\n <IconButton\n src={Close}\n size=\"sm\"\n iconAs={Icon}\n onClick={toggleSidebar}\n className=\"icon-hover\"\n alt={formatMessage(messages.closeAlt)}\n />\n </div>\n )}\n </h2>\n <CertificatePreview courseId={courseId} bgColor=\"bg-white\" />\n {offerMessage}\n {upgradeNotificationHeaderText && (\n <h3 className=\"upgrade-notification-subheader ml-4\">\n {upgradeNotificationHeaderText}\n </h3>\n )}\n {expirationBanner}\n <div className=\"upgrade-notification-message\">\n {upsellMessage || <UpsellTable {...{ isFBE, learningAssistantEnabled }} inlineHeader />}\n </div>\n {/* The table's bottom padding spaces the button; the messages that replace it don't. */}\n <div className={classNames('upgrade-notification-button mx-4 mb-4', { 'mt-4': !!upsellMessage })}>\n {callToActionButton}\n </div>\n </div>\n </section>\n );\n};\n\nUpgradeNotification.propTypes = {\n id: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n model: PropTypes.string,\n setNotificationCurrentState: PropTypes.func,\n toggleSidebar: PropTypes.func,\n};\n\nUpgradeNotification.defaultProps = {\n setNotificationCurrentState: null,\n toggleSidebar: null,\n model: 'outline',\n};\n\nexport default UpgradeNotification;\n"],"mappings":"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","ignoreList":[]}
@@ -71,12 +71,13 @@ const UpgradeToCompleteAlert = () => {
71
71
  conversion('Subscribe Clicked');
72
72
  },
73
73
  onPurchaseClick: () => (0, _track.logUpgradeLinkClick)(org, courseId),
74
- onUpgradeEvent: stage => {
75
- if (stage === 'succeeded') {
76
- (0, _track.logUpgradeLinkClick)(org, courseId);
77
- conversion('Upgraded');
78
- }
79
- }
74
+ onUpgradeEvent: (0, _subscriptionUpsell.logSubscriptionUpgrade)({
75
+ org,
76
+ courseId,
77
+ pageName: 'dates_tab',
78
+ placement: 'dates_banner',
79
+ linkName: 'dates_upgrade_now'
80
+ }, conversion)
80
81
  })
81
82
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
82
83
  variant: "brand",
@@ -1 +1 @@
1
- {"version":3,"file":"UpgradeToCompleteAlert.js","names":["_react","_interopRequireDefault","require","_reactRedux","_i18n","_paragon","_modelStore","_cohesion","_subscriptionUpsell","_messages","_track","_jsxRuntime","e","__esModule","default","UpgradeToCompleteAlert","intl","useIntl","courseId","useSelector","state","courseHome","datesBannerInfo","hasEnded","useModel","org","subscriptionOffer","useSubscriptionOffer","showSubscriptionUpsell","hasUpsell","conversion","useCohesion","contentTypeGatingEnabled","missedDeadlines","verifiedUpgradeLink","jsx","Alert","id","className","children","jsxs","Row","Col","xs","md","Heading","formatMessage","messages","upgradeToCompleteHeader","upgradeToCompleteBody","SubscriptionUpsell","onSubscribeClick","logUpgradeLinkClick","onPurchaseClick","onUpgradeEvent","stage","Button","variant","size","onClick","global","location","replace","upgradeToCompleteButton","_default","exports"],"sources":["../../src/upgrade-to-complete-alert/UpgradeToCompleteAlert.jsx"],"sourcesContent":["import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Alert,\n Button,\n Col,\n Row,\n} from '@openedx/paragon';\n\nimport { useModel } from '@src/generic/model-store'; // eslint-disable-line import/no-unresolved\nimport { useCohesion } from '../cohesion';\nimport { SubscriptionUpsell, useSubscriptionOffer } from '../subscription-upsell';\nimport messages from './messages';\nimport { logUpgradeLinkClick } from './track';\n\nconst UpgradeToCompleteAlert = () => {\n const intl = useIntl();\n const {\n courseId,\n } = useSelector(state => state.courseHome);\n\n const {\n datesBannerInfo,\n hasEnded,\n } = useModel('dates', courseId);\n\n const {\n org,\n } = useModel('courseHomeMeta', courseId);\n const subscriptionOffer = useSubscriptionOffer(courseId);\n // Without anything in the offer to show, the banner keeps today's Upgrade now button.\n const showSubscriptionUpsell = !!subscriptionOffer?.hasUpsell;\n const { conversion } = useCohesion(courseId);\n\n const {\n contentTypeGatingEnabled,\n missedDeadlines,\n verifiedUpgradeLink,\n } = datesBannerInfo || {};\n\n if (!contentTypeGatingEnabled || missedDeadlines || hasEnded || !verifiedUpgradeLink) {\n return null;\n }\n\n return (\n <Alert id=\"upgrade-complete-alert\" className=\"bg-light-200\">\n <Row className=\"w-100 m-0\">\n <Col xs={12} md={showSubscriptionUpsell ? 8 : 9} className=\"small p-0 pr-md-2\">\n <Alert.Heading>{intl.formatMessage(messages.upgradeToCompleteHeader)}</Alert.Heading>\n {intl.formatMessage(messages.upgradeToCompleteBody)}\n </Col>\n <Col xs={12} md={showSubscriptionUpsell ? 4 : 3} className=\"align-self-center text-right mt-3 mt-md-0 p-0\">\n {showSubscriptionUpsell ? (\n // No Figma for this banner yet: same banner, with the LP-1422 buttons in place of Upgrade now.\n <div className=\"d-inline-block text-left\">\n <SubscriptionUpsell\n courseId={courseId}\n onSubscribeClick={() => { logUpgradeLinkClick(org, courseId, 'dates_subscribe'); conversion('Subscribe Clicked'); }}\n onPurchaseClick={() => logUpgradeLinkClick(org, courseId)}\n onUpgradeEvent={(stage) => {\n if (stage === 'succeeded') { logUpgradeLinkClick(org, courseId); conversion('Upgraded'); }\n }}\n />\n </div>\n ) : (\n <Button\n variant=\"brand\"\n size=\"sm\"\n className=\"w-xs-100 w-md-auto\"\n onClick={() => {\n logUpgradeLinkClick(org, courseId);\n global.location.replace(verifiedUpgradeLink);\n }}\n >\n {intl.formatMessage(messages.upgradeToCompleteButton)}\n </Button>\n )}\n </Col>\n </Row>\n </Alert>\n );\n};\n\nexport default UpgradeToCompleteAlert;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"UpgradeToCompleteAlert.js","names":["_react","_interopRequireDefault","require","_reactRedux","_i18n","_paragon","_modelStore","_cohesion","_subscriptionUpsell","_messages","_track","_jsxRuntime","e","__esModule","default","UpgradeToCompleteAlert","intl","useIntl","courseId","useSelector","state","courseHome","datesBannerInfo","hasEnded","useModel","org","subscriptionOffer","useSubscriptionOffer","showSubscriptionUpsell","hasUpsell","conversion","useCohesion","contentTypeGatingEnabled","missedDeadlines","verifiedUpgradeLink","jsx","Alert","id","className","children","jsxs","Row","Col","xs","md","Heading","formatMessage","messages","upgradeToCompleteHeader","upgradeToCompleteBody","SubscriptionUpsell","onSubscribeClick","logUpgradeLinkClick","onPurchaseClick","onUpgradeEvent","logSubscriptionUpgrade","pageName","placement","linkName","Button","variant","size","onClick","global","location","replace","upgradeToCompleteButton","_default","exports"],"sources":["../../src/upgrade-to-complete-alert/UpgradeToCompleteAlert.jsx"],"sourcesContent":["import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Alert,\n Button,\n Col,\n Row,\n} from '@openedx/paragon';\n\nimport { useModel } from '@src/generic/model-store'; // eslint-disable-line import/no-unresolved\nimport { useCohesion } from '../cohesion';\nimport { SubscriptionUpsell, logSubscriptionUpgrade, useSubscriptionOffer } from '../subscription-upsell';\nimport messages from './messages';\nimport { logUpgradeLinkClick } from './track';\n\nconst UpgradeToCompleteAlert = () => {\n const intl = useIntl();\n const {\n courseId,\n } = useSelector(state => state.courseHome);\n\n const {\n datesBannerInfo,\n hasEnded,\n } = useModel('dates', courseId);\n\n const {\n org,\n } = useModel('courseHomeMeta', courseId);\n const subscriptionOffer = useSubscriptionOffer(courseId);\n // Without anything in the offer to show, the banner keeps today's Upgrade now button.\n const showSubscriptionUpsell = !!subscriptionOffer?.hasUpsell;\n const { conversion } = useCohesion(courseId);\n\n const {\n contentTypeGatingEnabled,\n missedDeadlines,\n verifiedUpgradeLink,\n } = datesBannerInfo || {};\n\n if (!contentTypeGatingEnabled || missedDeadlines || hasEnded || !verifiedUpgradeLink) {\n return null;\n }\n\n return (\n <Alert id=\"upgrade-complete-alert\" className=\"bg-light-200\">\n <Row className=\"w-100 m-0\">\n <Col xs={12} md={showSubscriptionUpsell ? 8 : 9} className=\"small p-0 pr-md-2\">\n <Alert.Heading>{intl.formatMessage(messages.upgradeToCompleteHeader)}</Alert.Heading>\n {intl.formatMessage(messages.upgradeToCompleteBody)}\n </Col>\n <Col xs={12} md={showSubscriptionUpsell ? 4 : 3} className=\"align-self-center text-right mt-3 mt-md-0 p-0\">\n {showSubscriptionUpsell ? (\n // No Figma for this banner yet: same banner, with the LP-1422 buttons in place of Upgrade now.\n <div className=\"d-inline-block text-left\">\n <SubscriptionUpsell\n courseId={courseId}\n onSubscribeClick={() => { logUpgradeLinkClick(org, courseId, 'dates_subscribe'); conversion('Subscribe Clicked'); }}\n onPurchaseClick={() => logUpgradeLinkClick(org, courseId)}\n onUpgradeEvent={logSubscriptionUpgrade({\n org, courseId, pageName: 'dates_tab', placement: 'dates_banner', linkName: 'dates_upgrade_now',\n }, conversion)}\n />\n </div>\n ) : (\n <Button\n variant=\"brand\"\n size=\"sm\"\n className=\"w-xs-100 w-md-auto\"\n onClick={() => {\n logUpgradeLinkClick(org, courseId);\n global.location.replace(verifiedUpgradeLink);\n }}\n >\n {intl.formatMessage(messages.upgradeToCompleteButton)}\n </Button>\n )}\n </Col>\n </Row>\n </Alert>\n );\n};\n\nexport default UpgradeToCompleteAlert;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edx/frontend-plugin-advertisements",
3
- "version": "2.28.0",
3
+ "version": "2.29.0",
4
4
  "description": "Frontend plugin for edX in course advertisements",
5
5
  "main": "dist/index.js",
6
6
  "repository": {