@edx/frontend-plugin-advertisements 1.23.2 → 1.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,7 +9,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _modelStore = require("@src/generic/model-store");
10
10
  var _UpgradeModal = _interopRequireDefault(require("./UpgradeModal"));
11
11
  var _NextButton = _interopRequireDefault(require("./NextButton"));
12
- var _hooks = _interopRequireDefault(require("./hooks"));
12
+ var _hooks = require("./hooks");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -35,26 +35,18 @@ const ExperimentalUpgradeModal = _ref => {
35
35
  } = _ref;
36
36
  const {
37
37
  verifiedMode,
38
- org,
39
- isStaff
38
+ org
40
39
  } = (0, _modelStore.useModel)('courseHomeMeta', courseId);
41
40
  const {
42
- enrollmentMode,
43
41
  offer,
44
42
  marketingUrl,
45
43
  accessExpiration
46
44
  } = (0, _modelStore.useModel)('coursewareMeta', courseId);
47
- const [qualifiesForModal, shouldShowModalOnClick, countNextClick] = (0, _hooks.default)({
48
- verifiedMode,
49
- isStaff,
50
- enrollmentMode
51
- });
45
+ const [shouldShowModalOnClick, countNextClick] = (0, _hooks.useInCourseUpgradeModal)();
52
46
  const handleModal = () => {
53
- if (qualifiesForModal) {
54
- countNextClick();
55
- if (shouldShowModalOnClick) {
56
- open();
57
- }
47
+ countNextClick();
48
+ if (shouldShowModalOnClick) {
49
+ open();
58
50
  }
59
51
  };
60
52
  (0, _react.useEffect)(() => {
@@ -73,7 +65,7 @@ const ExperimentalUpgradeModal = _ref => {
73
65
  nextSequenceHandler,
74
66
  handleNavigate,
75
67
  linkComponent
76
- }), verifiedMode && /*#__PURE__*/(0, _jsxRuntime.jsx)(_UpgradeModal.default, {
68
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_UpgradeModal.default, {
77
69
  isOpen,
78
70
  close,
79
71
  verifiedMode,
@@ -1 +1 @@
1
- {"version":3,"file":"ExperimentalUpgradeModal.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_modelStore","_UpgradeModal","_NextButton","_hooks","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ExperimentalUpgradeModal","_ref","courseId","disabled","buttonText","nextArrow","nextLink","shouldDisplayNotificationTriggerInSequence","sequenceId","unitId","nextSequenceHandler","handleNavigate","isOpen","open","close","linkComponent","verifiedMode","org","isStaff","useModel","enrollmentMode","offer","marketingUrl","accessExpiration","qualifiesForModal","shouldShowModalOnClick","countNextClick","useInCourseUpgradeModal","handleModal","useEffect","jsxs","Fragment","children","jsx","propTypes","PropTypes","bool","isRequired","string","func","node","_default","exports"],"sources":["../../src/upgrade-modal/ExperimentalUpgradeModal.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useModel } from '@src/generic/model-store';\nimport UpgradeModal from './UpgradeModal';\nimport NextButton from './NextButton';\nimport useInCourseUpgradeModal from './hooks';\n\nconst ExperimentalUpgradeModal = ({\n courseId,\n disabled,\n buttonText,\n nextArrow,\n nextLink,\n shouldDisplayNotificationTriggerInSequence,\n sequenceId,\n unitId,\n nextSequenceHandler,\n handleNavigate,\n isOpen,\n open,\n close,\n linkComponent,\n}) => {\n const {\n verifiedMode,\n org,\n isStaff,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n enrollmentMode,\n offer,\n marketingUrl,\n accessExpiration,\n } = useModel('coursewareMeta', courseId);\n\n const [\n qualifiesForModal,\n shouldShowModalOnClick,\n countNextClick,\n ] = useInCourseUpgradeModal({ verifiedMode, isStaff, enrollmentMode });\n\n const handleModal = () => {\n if (qualifiesForModal) {\n countNextClick();\n if (shouldShowModalOnClick) {\n open();\n }\n }\n };\n\n useEffect(() => {\n handleModal();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sequenceId]);\n\n return (\n <>\n <NextButton\n {...{\n disabled,\n buttonText,\n nextArrow,\n nextLink,\n shouldDisplayNotificationTriggerInSequence,\n sequenceId,\n unitId,\n nextSequenceHandler,\n handleNavigate,\n linkComponent,\n }}\n />\n {verifiedMode && (\n <UpgradeModal\n {...{\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n }}\n />\n )}\n </>\n );\n};\n\nExperimentalUpgradeModal.propTypes = {\n disabled: PropTypes.bool.isRequired,\n buttonText: PropTypes.string.isRequired,\n nextArrow: PropTypes.func.isRequired,\n nextLink: PropTypes.string.isRequired,\n shouldDisplayNotificationTriggerInSequence: PropTypes.bool.isRequired,\n sequenceId: PropTypes.string.isRequired,\n unitId: PropTypes.string.isRequired,\n handleNavigate: PropTypes.func.isRequired,\n nextSequenceHandler: PropTypes.func.isRequired,\n isOpen: PropTypes.bool.isRequired,\n open: PropTypes.func.isRequired,\n linkComponent: PropTypes.node.isRequired,\n close: PropTypes.func.isRequired,\n courseId: PropTypes.string.isRequired,\n};\n\nexport default ExperimentalUpgradeModal;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ExperimentalUpgradeModal.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_modelStore","_UpgradeModal","_NextButton","_hooks","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ExperimentalUpgradeModal","_ref","courseId","disabled","buttonText","nextArrow","nextLink","shouldDisplayNotificationTriggerInSequence","sequenceId","unitId","nextSequenceHandler","handleNavigate","isOpen","open","close","linkComponent","verifiedMode","org","useModel","offer","marketingUrl","accessExpiration","shouldShowModalOnClick","countNextClick","useInCourseUpgradeModal","handleModal","useEffect","jsxs","Fragment","children","jsx","propTypes","PropTypes","bool","isRequired","string","func","node","_default","exports"],"sources":["../../src/upgrade-modal/ExperimentalUpgradeModal.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useModel } from '@src/generic/model-store';\nimport UpgradeModal from './UpgradeModal';\nimport NextButton from './NextButton';\nimport { useInCourseUpgradeModal } from './hooks';\n\nconst ExperimentalUpgradeModal = ({\n courseId,\n disabled,\n buttonText,\n nextArrow,\n nextLink,\n shouldDisplayNotificationTriggerInSequence,\n sequenceId,\n unitId,\n nextSequenceHandler,\n handleNavigate,\n isOpen,\n open,\n close,\n linkComponent,\n}) => {\n const {\n verifiedMode,\n org,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n offer,\n marketingUrl,\n accessExpiration,\n } = useModel('coursewareMeta', courseId);\n\n const [shouldShowModalOnClick, countNextClick] = useInCourseUpgradeModal();\n\n const handleModal = () => {\n countNextClick();\n if (shouldShowModalOnClick) {\n open();\n }\n };\n\n useEffect(() => {\n handleModal();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sequenceId]);\n\n return (\n <>\n <NextButton\n {...{\n disabled,\n buttonText,\n nextArrow,\n nextLink,\n shouldDisplayNotificationTriggerInSequence,\n sequenceId,\n unitId,\n nextSequenceHandler,\n handleNavigate,\n linkComponent,\n }}\n />\n <UpgradeModal\n {...{\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n }}\n />\n </>\n );\n};\n\nExperimentalUpgradeModal.propTypes = {\n disabled: PropTypes.bool.isRequired,\n buttonText: PropTypes.string.isRequired,\n nextArrow: PropTypes.func.isRequired,\n nextLink: PropTypes.string.isRequired,\n shouldDisplayNotificationTriggerInSequence: PropTypes.bool.isRequired,\n sequenceId: PropTypes.string.isRequired,\n unitId: PropTypes.string.isRequired,\n handleNavigate: PropTypes.func.isRequired,\n nextSequenceHandler: PropTypes.func.isRequired,\n isOpen: PropTypes.bool.isRequired,\n open: PropTypes.func.isRequired,\n linkComponent: PropTypes.node.isRequired,\n close: PropTypes.func.isRequired,\n courseId: PropTypes.string.isRequired,\n};\n\nexport default ExperimentalUpgradeModal;\n"],"mappings":"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","ignoreList":[]}
@@ -88,7 +88,7 @@ const UpgradeModal = _ref => {
88
88
  currencySymbol,
89
89
  price,
90
90
  upgradeUrl
91
- } = verifiedMode;
91
+ } = verifiedMode || {};
92
92
  const upgradeDeadlineDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;
93
93
  const pastDeadline = accessExpiration ? new Date(dateNow) > upgradeDeadlineDate : false;
94
94
  const modalTitle = intl.formatMessage({
@@ -1 +1 @@
1
- {"version":3,"file":"UpgradeModal.js","names":["_react","require","_propTypes","_interopRequireDefault","_reactSdk","_frontendPlatform","_analytics","_i18n","_paragon","_icons","_data","_certificatePreview","_jsxRuntime","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","UpgradeModal","_ref","isOpen","close","verifiedMode","org","courseId","offer","marketingUrl","accessExpiration","optimizely","decision","useDecision","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","variationKey","experimentProperties","experiment_key","variation_key","upsellPageName","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logClick","location","linkCategory","linkName","linkType","pageName","track","ACTION","logClickPastExpiration","intl","useIntl","dateNow","Date","now","currencySymbol","price","upgradeUrl","upgradeDeadlineDate","upgradeDeadline","pastDeadline","modalTitle","formatMessage","id","defaultMessage","description","callToActionButton","jsx","Button","className","onClick","href","children","jsxs","MarketingModal","title","onClose","isBlocking","size","heroIsDark","heroNode","ModalDialog","Hero","style","background","borderTopLeftRadius","borderTopRightRadius","Content","bgColor","footerNode","ActionRow","isStacked","values","code","role","Stack","gap","direction","Icon","src","Check","linkedContent","Hyperlink","destination","getConfig","MARKETING_SITE_BASE_URL","defaultProps","propTypes","PropTypes","shape","number","isRequired","string","func","bool","node","_default","exports","withOptimizely"],"sources":["../../src/upgrade-modal/UpgradeModal.jsx"],"sourcesContent":["import { useEffect, React } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDecision, withOptimizely } from '@optimizely/react-sdk';\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow, Button, Hyperlink, Icon, MarketingModal, ModalDialog, Stack,\n} from '@openedx/paragon';\nimport { Check } from '@openedx/paragon/icons';\nimport { OPTIMIZELY_VTR_MODAL_EXPERIMENT } from '../data';\nimport CertificatePreview from '../upgrade-notification/certificate-preview';\n\nconst UpgradeModal = ({\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n optimizely,\n}) => {\n const [decision] = useDecision(OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY);\n const { variationKey } = decision;\n\n // Experiment specific properties or data should not be sent to the tracking logs, so break this\n // object out to ensure it is only sent to Segment and not the tracking logs.\n const experimentProperties = {\n experiment_key: OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY,\n variation_key: variationKey,\n };\n\n const upsellPageName = 'course_sequence_modal';\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n const promotionEventProperties = {\n creative: 'marketmodalupsell',\n name: 'In-Course Verification Prompt',\n position: 'marketing-modal-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n ...experimentProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketmodalupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const logClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketingmodal.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'marketing-modal-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n ...experimentProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n optimizely.track(OPTIMIZELY_VTR_MODAL_EXPERIMENT.ACTION);\n };\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_modal.past_expiration.button_clicked', {\n ...eventProperties,\n ...experimentProperties,\n linkCategory: 'upgrade_modal',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const intl = useIntl();\n const dateNow = Date.now();\n const { currencySymbol, price, upgradeUrl } = verifiedMode;\n const upgradeDeadlineDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastDeadline = accessExpiration ? new Date(dateNow) > upgradeDeadlineDate : false;\n const modalTitle = intl.formatMessage({\n id: 'learning.upgrade-modal.title',\n defaultMessage: 'Pursue a verified certificate',\n description: 'Upgrade modal title',\n });\n let callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClick}\n href={upgradeUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'Upgrade for {currencySymbol}{price}',\n description: 'Label for upgrade button',\n },\n { currencySymbol, price },\n )}\n </Button>\n );\n\n if (pastDeadline) {\n callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'View course details',\n description: 'Label for upgrade button',\n },\n )}\n </Button>\n );\n }\n\n return (\n <MarketingModal\n title={modalTitle}\n isOpen={isOpen}\n onClose={close}\n isBlocking\n size=\"md\"\n heroIsDark\n heroNode={(\n <ModalDialog.Hero\n className=\"justify-content-center\"\n style={{\n background: 'linear-gradient(#001B1E, #0E3639)',\n borderTopLeftRadius: '6.8px',\n borderTopRightRadius: '6.8px',\n }}\n >\n <ModalDialog.Hero.Content className=\"m-0 text-primary-500\">\n {/* TODO: replace with simplified */}\n <CertificatePreview {...{ courseId, bgColor: 'bg-light-100' }} />\n </ModalDialog.Hero.Content>\n </ModalDialog.Hero>\n )}\n footerNode={(\n <ActionRow isStacked className=\"mb-2\">\n {callToActionButton}\n {offer && (\n <div className=\"text-center discount-info\">\n {intl.formatMessage({\n id: 'learning.generic.upgradeNotification.code',\n defaultMessage: 'Use code {code} at checkout',\n values: {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n })}\n </div>\n )}\n </ActionRow>\n )}\n >\n <h2 className=\"h3 mb-3 mt-2.5\">\n {modalTitle}\n </h2>\n <div role=\"list\" className=\"pl-2 text-gray-700\">\n <Stack gap={3} role=\"listitem\">\n <Stack direction=\"horizontal\" gap={3} className=\"align-items-start\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.first-item',\n defaultMessage: 'Earn a {linkedContent} of completion to showcase your résumé',\n description: 'Message for first list item',\n },\n {\n linkedContent: (\n <Hyperlink\n className=\"font-weight-bold text-primary-500 inline-link-underline\"\n destination={`${getConfig().MARKETING_SITE_BASE_URL}/verified-certificate`}\n >\n verified certificate\n </Hyperlink>\n ),\n },\n )}\n </span>\n </Stack>\n <Stack direction=\"horizontal\" gap={3} role=\"listitem\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.second-item',\n defaultMessage: 'Support our mission at edX',\n description: 'Message for second list item',\n },\n )}\n </span>\n </Stack>\n </Stack>\n </div>\n </MarketingModal>\n );\n};\n\nUpgradeModal.defaultProps = {\n verifiedMode: {},\n offer: null,\n accessExpiration: null,\n};\nUpgradeModal.propTypes = {\n verifiedMode: PropTypes.shape({\n price: PropTypes.number.isRequired,\n currencySymbol: PropTypes.string.isRequired,\n upgradeUrl: PropTypes.string.isRequired,\n }),\n offer: PropTypes.shape({\n code: PropTypes.string,\n }),\n accessExpiration: PropTypes.shape({\n upgradeDeadline: PropTypes.string,\n }),\n marketingUrl: PropTypes.string.isRequired,\n org: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n close: PropTypes.func.isRequired,\n isOpen: PropTypes.bool.isRequired,\n optimizely: PropTypes.node.isRequired,\n};\n\nexport default withOptimizely(UpgradeModal);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"UpgradeModal.js","names":["_react","require","_propTypes","_interopRequireDefault","_reactSdk","_frontendPlatform","_analytics","_i18n","_paragon","_icons","_data","_certificatePreview","_jsxRuntime","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","UpgradeModal","_ref","isOpen","close","verifiedMode","org","courseId","offer","marketingUrl","accessExpiration","optimizely","decision","useDecision","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","variationKey","experimentProperties","experiment_key","variation_key","upsellPageName","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logClick","location","linkCategory","linkName","linkType","pageName","track","ACTION","logClickPastExpiration","intl","useIntl","dateNow","Date","now","currencySymbol","price","upgradeUrl","upgradeDeadlineDate","upgradeDeadline","pastDeadline","modalTitle","formatMessage","id","defaultMessage","description","callToActionButton","jsx","Button","className","onClick","href","children","jsxs","MarketingModal","title","onClose","isBlocking","size","heroIsDark","heroNode","ModalDialog","Hero","style","background","borderTopLeftRadius","borderTopRightRadius","Content","bgColor","footerNode","ActionRow","isStacked","values","code","role","Stack","gap","direction","Icon","src","Check","linkedContent","Hyperlink","destination","getConfig","MARKETING_SITE_BASE_URL","defaultProps","propTypes","PropTypes","shape","number","isRequired","string","func","bool","node","_default","exports","withOptimizely"],"sources":["../../src/upgrade-modal/UpgradeModal.jsx"],"sourcesContent":["import { useEffect, React } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDecision, withOptimizely } from '@optimizely/react-sdk';\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow, Button, Hyperlink, Icon, MarketingModal, ModalDialog, Stack,\n} from '@openedx/paragon';\nimport { Check } from '@openedx/paragon/icons';\nimport { OPTIMIZELY_VTR_MODAL_EXPERIMENT } from '../data';\nimport CertificatePreview from '../upgrade-notification/certificate-preview';\n\nconst UpgradeModal = ({\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n optimizely,\n}) => {\n const [decision] = useDecision(OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY);\n const { variationKey } = decision;\n\n // Experiment specific properties or data should not be sent to the tracking logs, so break this\n // object out to ensure it is only sent to Segment and not the tracking logs.\n const experimentProperties = {\n experiment_key: OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY,\n variation_key: variationKey,\n };\n\n const upsellPageName = 'course_sequence_modal';\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n const promotionEventProperties = {\n creative: 'marketmodalupsell',\n name: 'In-Course Verification Prompt',\n position: 'marketing-modal-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n ...experimentProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketmodalupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const logClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketingmodal.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'marketing-modal-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n ...experimentProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n optimizely.track(OPTIMIZELY_VTR_MODAL_EXPERIMENT.ACTION);\n };\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_modal.past_expiration.button_clicked', {\n ...eventProperties,\n ...experimentProperties,\n linkCategory: 'upgrade_modal',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const intl = useIntl();\n const dateNow = Date.now();\n const { currencySymbol, price, upgradeUrl } = verifiedMode || {};\n const upgradeDeadlineDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastDeadline = accessExpiration ? new Date(dateNow) > upgradeDeadlineDate : false;\n const modalTitle = intl.formatMessage({\n id: 'learning.upgrade-modal.title',\n defaultMessage: 'Pursue a verified certificate',\n description: 'Upgrade modal title',\n });\n let callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClick}\n href={upgradeUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'Upgrade for {currencySymbol}{price}',\n description: 'Label for upgrade button',\n },\n { currencySymbol, price },\n )}\n </Button>\n );\n\n if (pastDeadline) {\n callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'View course details',\n description: 'Label for upgrade button',\n },\n )}\n </Button>\n );\n }\n\n return (\n <MarketingModal\n title={modalTitle}\n isOpen={isOpen}\n onClose={close}\n isBlocking\n size=\"md\"\n heroIsDark\n heroNode={(\n <ModalDialog.Hero\n className=\"justify-content-center\"\n style={{\n background: 'linear-gradient(#001B1E, #0E3639)',\n borderTopLeftRadius: '6.8px',\n borderTopRightRadius: '6.8px',\n }}\n >\n <ModalDialog.Hero.Content className=\"m-0 text-primary-500\">\n {/* TODO: replace with simplified */}\n <CertificatePreview {...{ courseId, bgColor: 'bg-light-100' }} />\n </ModalDialog.Hero.Content>\n </ModalDialog.Hero>\n )}\n footerNode={(\n <ActionRow isStacked className=\"mb-2\">\n {callToActionButton}\n {offer && (\n <div className=\"text-center discount-info\">\n {intl.formatMessage({\n id: 'learning.generic.upgradeNotification.code',\n defaultMessage: 'Use code {code} at checkout',\n values: {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n })}\n </div>\n )}\n </ActionRow>\n )}\n >\n <h2 className=\"h3 mb-3 mt-2.5\">\n {modalTitle}\n </h2>\n <div role=\"list\" className=\"pl-2 text-gray-700\">\n <Stack gap={3} role=\"listitem\">\n <Stack direction=\"horizontal\" gap={3} className=\"align-items-start\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.first-item',\n defaultMessage: 'Earn a {linkedContent} of completion to showcase your résumé',\n description: 'Message for first list item',\n },\n {\n linkedContent: (\n <Hyperlink\n className=\"font-weight-bold text-primary-500 inline-link-underline\"\n destination={`${getConfig().MARKETING_SITE_BASE_URL}/verified-certificate`}\n >\n verified certificate\n </Hyperlink>\n ),\n },\n )}\n </span>\n </Stack>\n <Stack direction=\"horizontal\" gap={3} role=\"listitem\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.second-item',\n defaultMessage: 'Support our mission at edX',\n description: 'Message for second list item',\n },\n )}\n </span>\n </Stack>\n </Stack>\n </div>\n </MarketingModal>\n );\n};\n\nUpgradeModal.defaultProps = {\n verifiedMode: {},\n offer: null,\n accessExpiration: null,\n};\nUpgradeModal.propTypes = {\n verifiedMode: PropTypes.shape({\n price: PropTypes.number.isRequired,\n currencySymbol: PropTypes.string.isRequired,\n upgradeUrl: PropTypes.string.isRequired,\n }),\n offer: PropTypes.shape({\n code: PropTypes.string,\n }),\n accessExpiration: PropTypes.shape({\n upgradeDeadline: PropTypes.string,\n }),\n marketingUrl: PropTypes.string.isRequired,\n org: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n close: PropTypes.func.isRequired,\n isOpen: PropTypes.bool.isRequired,\n optimizely: PropTypes.node.isRequired,\n};\n\nexport default withOptimizely(UpgradeModal);\n"],"mappings":"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","ignoreList":[]}
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _propTypes = _interopRequireDefault(require("prop-types"));
8
- var _modelStore = require("@src/generic/model-store");
9
8
  var _frontendPlatform = require("@edx/frontend-platform");
10
9
  var _DefaultUpgradeModal = _interopRequireDefault(require("./DefaultUpgradeModal"));
11
10
  var _ExperimentalUpgradeModal = _interopRequireDefault(require("./ExperimentalUpgradeModal"));
11
+ var _hooks = require("./hooks");
12
12
  var _optimizely = _interopRequireDefault(require("../optimizely"));
13
13
  var _optimizely2 = require("../data/optimizely");
14
14
  var _jsxRuntime = require("react/jsx-runtime");
@@ -19,28 +19,13 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
19
19
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
20
20
  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); } /* eslint-disable import/no-unresolved */
21
21
  (0, _frontendPlatform.ensureConfig)(['OPTIMIZELY_MODAL_ROLLOUT_WHITELIST'], 'Optimizely In-Course Modal rollout config');
22
-
23
- // This is not fully functional and is currently just a copy of the UpgradeNotification
24
- // experiment with the imports updated
25
- const isExperimentEnabledForOrg = org => {
26
- const {
27
- OPTIMIZELY_MODAL_ROLLOUT_WHITELIST
28
- } = (0, _frontendPlatform.getConfig)();
29
- if (!OPTIMIZELY_MODAL_ROLLOUT_WHITELIST) {
30
- return false;
31
- }
32
- return OPTIMIZELY_MODAL_ROLLOUT_WHITELIST.includes(org);
33
- };
34
22
  const UpgradeModalWrapper = props => {
35
23
  const {
36
24
  courseId
37
25
  } = props;
38
- const {
39
- org
40
- } = (0, _modelStore.useModel)('courseHomeMeta', courseId);
41
- const allowExperiment = isExperimentEnabledForOrg(org);
42
-
43
- // If the org isn't whitelisted for experiment rollout, don't run the experiment
26
+ const allowExperiment = (0, _hooks.useIsModalExperimentEnabled)(courseId);
27
+ // If the org isn't whitelisted for experiment rollout, or the user would never
28
+ // see the modal anyway, don't run the experiment.
44
29
  // We don't want users who aren't being experimented on to be bucketed, which will
45
30
  // happen if we call useDecision()
46
31
  return allowExperiment ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_optimizely.default, _objectSpread({
@@ -1 +1 @@
1
- {"version":3,"file":"UpgradeModalWrapper.js","names":["_propTypes","_interopRequireDefault","require","_modelStore","_frontendPlatform","_DefaultUpgradeModal","_ExperimentalUpgradeModal","_optimizely","_optimizely2","_jsxRuntime","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ensureConfig","isExperimentEnabledForOrg","org","OPTIMIZELY_MODAL_ROLLOUT_WHITELIST","getConfig","includes","UpgradeModalWrapper","props","courseId","useModel","allowExperiment","jsx","defaultComponent","DefaultUpgradeModal","experimentalComponent","ExperimentalUpgradeModal","defaultVariationKey","experimentKey","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../src/upgrade-modal/UpgradeModalWrapper.jsx"],"sourcesContent":["/* eslint-disable import/no-unresolved */\nimport PropTypes from 'prop-types';\nimport { useModel } from '@src/generic/model-store';\nimport { ensureConfig, getConfig } from '@edx/frontend-platform';\n\nimport DefaultUpgradeModal from './DefaultUpgradeModal';\nimport ExperimentalUpgradeModal from './ExperimentalUpgradeModal';\n\nimport OptimizelyExperiment from '../optimizely';\nimport { OPTIMIZELY_VTR_MODAL_EXPERIMENT } from '../data/optimizely';\n\nensureConfig([\n 'OPTIMIZELY_MODAL_ROLLOUT_WHITELIST',\n], 'Optimizely In-Course Modal rollout config');\n\n// This is not fully functional and is currently just a copy of the UpgradeNotification\n// experiment with the imports updated\nconst isExperimentEnabledForOrg = (org) => {\n const { OPTIMIZELY_MODAL_ROLLOUT_WHITELIST } = getConfig();\n if (!OPTIMIZELY_MODAL_ROLLOUT_WHITELIST) { return false; }\n return OPTIMIZELY_MODAL_ROLLOUT_WHITELIST.includes(org);\n};\n\nconst UpgradeModalWrapper = (props) => {\n const { courseId } = props;\n const { org } = useModel('courseHomeMeta', courseId);\n const allowExperiment = isExperimentEnabledForOrg(org);\n\n // If the org isn't whitelisted for experiment rollout, don't run the experiment\n // We don't want users who aren't being experimented on to be bucketed, which will\n // happen if we call useDecision()\n return (\n allowExperiment ? (\n <OptimizelyExperiment\n defaultComponent={DefaultUpgradeModal}\n experimentalComponent={ExperimentalUpgradeModal}\n defaultVariationKey=\"off\"\n experimentKey={OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY}\n {...props}\n />\n ) : <DefaultUpgradeModal {...props} />\n );\n};\n\nUpgradeModalWrapper.propTypes = {\n courseId: PropTypes.string.isRequired,\n};\n\nexport default UpgradeModalWrapper;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"UpgradeModalWrapper.js","names":["_propTypes","_interopRequireDefault","require","_frontendPlatform","_DefaultUpgradeModal","_ExperimentalUpgradeModal","_hooks","_optimizely","_optimizely2","_jsxRuntime","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ensureConfig","UpgradeModalWrapper","props","courseId","allowExperiment","useIsModalExperimentEnabled","jsx","defaultComponent","DefaultUpgradeModal","experimentalComponent","ExperimentalUpgradeModal","defaultVariationKey","experimentKey","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../src/upgrade-modal/UpgradeModalWrapper.jsx"],"sourcesContent":["/* eslint-disable import/no-unresolved */\nimport PropTypes from 'prop-types';\nimport { ensureConfig } from '@edx/frontend-platform';\n\nimport DefaultUpgradeModal from './DefaultUpgradeModal';\nimport ExperimentalUpgradeModal from './ExperimentalUpgradeModal';\nimport { useIsModalExperimentEnabled } from './hooks';\n\nimport OptimizelyExperiment from '../optimizely';\nimport { OPTIMIZELY_VTR_MODAL_EXPERIMENT } from '../data/optimizely';\n\nensureConfig([\n 'OPTIMIZELY_MODAL_ROLLOUT_WHITELIST',\n], 'Optimizely In-Course Modal rollout config');\n\nconst UpgradeModalWrapper = (props) => {\n const { courseId } = props;\n const allowExperiment = useIsModalExperimentEnabled(courseId);\n // If the org isn't whitelisted for experiment rollout, or the user would never\n // see the modal anyway, don't run the experiment.\n // We don't want users who aren't being experimented on to be bucketed, which will\n // happen if we call useDecision()\n return (\n allowExperiment ? (\n <OptimizelyExperiment\n defaultComponent={DefaultUpgradeModal}\n experimentalComponent={ExperimentalUpgradeModal}\n defaultVariationKey=\"off\"\n experimentKey={OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY}\n {...props}\n />\n ) : <DefaultUpgradeModal {...props} />\n );\n};\n\nUpgradeModalWrapper.propTypes = {\n courseId: PropTypes.string.isRequired,\n};\n\nexport default UpgradeModalWrapper;\n"],"mappings":"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","ignoreList":[]}
@@ -3,8 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.useInCourseUpgradeModal = useInCourseUpgradeModal;
7
+ exports.useIsModalExperimentEnabled = useIsModalExperimentEnabled;
7
8
  var _react = require("react");
9
+ var _modelStore = require("@src/generic/model-store");
10
+ var _frontendPlatform = require("@edx/frontend-platform");
11
+ /* eslint import/no-unresolved: 0 */
12
+
8
13
  const CLICK_COUNT_KEY = 'VTR_IN_COURSE_MODAL_NEXT_CLICK_COUNT';
9
14
  const SHOW_MODAL_CLICK_COUNT = 3;
10
15
  function isLocalStorageAvailable() {
@@ -48,23 +53,51 @@ function useClickCount() {
48
53
  }, [clickCount, localStorageAvailable]);
49
54
  return [clickCount, setClickCount];
50
55
  }
51
- function useInCourseUpgradeModal(_ref) {
52
- let {
53
- verifiedMode,
54
- isStaff,
55
- enrollmentMode
56
- } = _ref;
56
+ function useInCourseUpgradeModal() {
57
57
  /**
58
58
  * Hook that wraps around useClickCount to handle the "modal show" logic
59
59
  */
60
- const qualifiesForModal = enrollmentMode === 'audit' && verifiedMode && !isStaff;
61
60
  const [clickCount, setClickCount] = useClickCount();
62
61
  const nextClick = clickCount + 1;
63
62
  const countNextClick = () => {
64
63
  setClickCount(nextClick);
65
64
  };
66
65
  const shouldShowModalOnClick = nextClick % SHOW_MODAL_CLICK_COUNT === 0;
67
- return [qualifiesForModal, shouldShowModalOnClick, countNextClick];
66
+ return [shouldShowModalOnClick, countNextClick];
67
+ }
68
+ function isExperimentEnabledForOrg(org) {
69
+ const {
70
+ OPTIMIZELY_MODAL_ROLLOUT_WHITELIST
71
+ } = (0, _frontendPlatform.getConfig)();
72
+ if (!OPTIMIZELY_MODAL_ROLLOUT_WHITELIST) {
73
+ return false;
74
+ }
75
+ return OPTIMIZELY_MODAL_ROLLOUT_WHITELIST.includes(org);
76
+ }
77
+ function useIsModalExperimentEnabled(courseId) {
78
+ /** The following must be true for the experiment to be activated:
79
+ * - The user must be an audit learner
80
+ * - The user must not be staff
81
+ * - The course must have a verified mode
82
+ * - (During rollout) The org must be whitelisted
83
+ */
84
+ const {
85
+ verifiedMode,
86
+ org,
87
+ isStaff
88
+ } = (0, _modelStore.useModel)('courseHomeMeta', courseId);
89
+ const {
90
+ enrollmentMode
91
+ } = (0, _modelStore.useModel)('coursewareMeta', courseId);
92
+ const enabledForOrg = isExperimentEnabledForOrg(org);
93
+ // eslint-disable-next-line no-console
94
+ console.info({
95
+ org,
96
+ enabledForOrg,
97
+ enrollmentMode,
98
+ isStaff,
99
+ verifiedMode
100
+ });
101
+ return enrollmentMode === 'audit' && !!verifiedMode && !isStaff && enabledForOrg;
68
102
  }
69
- var _default = exports.default = useInCourseUpgradeModal;
70
103
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","names":["_react","require","CLICK_COUNT_KEY","SHOW_MODAL_CLICK_COUNT","isLocalStorageAvailable","testKey","localStorage","setItem","removeItem","e","useClickCount","localStorageAvailable","clickCount","setClickCount","useState","clickString","getItem","clicks","JSON","parse","useEffect","undefined","stringify","useInCourseUpgradeModal","_ref","verifiedMode","isStaff","enrollmentMode","qualifiesForModal","nextClick","countNextClick","shouldShowModalOnClick","_default","exports","default"],"sources":["../../src/upgrade-modal/hooks.js"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nconst CLICK_COUNT_KEY = 'VTR_IN_COURSE_MODAL_NEXT_CLICK_COUNT';\nconst SHOW_MODAL_CLICK_COUNT = 3;\n\nfunction isLocalStorageAvailable() {\n // A simple helper to check if localStorage is currently available\n const testKey = 'testKey';\n try {\n localStorage.setItem(testKey, testKey);\n localStorage.removeItem(testKey);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction useClickCount() {\n /**\n * Hook that tracks the number of times that a user has clicked something\n * and stores that number in localStorage (if available).\n *\n * Returns: [clickCount, setClickCount]\n * - clickCount (int): The current count of clicks\n * - setClickCount (func): Function to update the number of clicks\n */\n const localStorageAvailable = isLocalStorageAvailable();\n const [clickCount, setClickCount] = useState(() => {\n if (!localStorageAvailable) { return 0; }\n const clickString = localStorage.getItem(CLICK_COUNT_KEY);\n const clicks = JSON.parse(clickString);\n return clicks || 0;\n });\n\n useEffect(() => {\n // When clickCount changes, this will update it in localStorage\n if (clickCount === undefined) { return; }\n if (!localStorageAvailable) { return; }\n localStorage.setItem(CLICK_COUNT_KEY, JSON.stringify(clickCount));\n }, [clickCount, localStorageAvailable]);\n\n return [clickCount, setClickCount];\n}\n\nfunction useInCourseUpgradeModal({ verifiedMode, isStaff, enrollmentMode }) {\n /**\n * Hook that wraps around useClickCount to handle the \"modal show\" logic\n */\n const qualifiesForModal = (enrollmentMode === 'audit' && verifiedMode && !isStaff);\n const [clickCount, setClickCount] = useClickCount();\n const nextClick = clickCount + 1;\n const countNextClick = () => { setClickCount(nextClick); };\n const shouldShowModalOnClick = nextClick % SHOW_MODAL_CLICK_COUNT === 0;\n return [qualifiesForModal, shouldShowModalOnClick, countNextClick];\n}\n\nexport default useInCourseUpgradeModal;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,eAAe,GAAG,sCAAsC;AAC9D,MAAMC,sBAAsB,GAAG,CAAC;AAEhC,SAASC,uBAAuBA,CAAA,EAAG;EACjC;EACA,MAAMC,OAAO,GAAG,SAAS;EACzB,IAAI;IACFC,YAAY,CAACC,OAAO,CAACF,OAAO,EAAEA,OAAO,CAAC;IACtCC,YAAY,CAACE,UAAU,CAACH,OAAO,CAAC;IAChC,OAAO,IAAI;EACb,CAAC,CAAC,OAAOI,CAAC,EAAE;IACV,OAAO,KAAK;EACd;AACF;AAEA,SAASC,aAAaA,CAAA,EAAG;EACvB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,qBAAqB,GAAGP,uBAAuB,CAAC,CAAC;EACvD,MAAM,CAACQ,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAM;IACjD,IAAI,CAACH,qBAAqB,EAAE;MAAE,OAAO,CAAC;IAAE;IACxC,MAAMI,WAAW,GAAGT,YAAY,CAACU,OAAO,CAACd,eAAe,CAAC;IACzD,MAAMe,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACJ,WAAW,CAAC;IACtC,OAAOE,MAAM,IAAI,CAAC;EACpB,CAAC,CAAC;EAEF,IAAAG,gBAAS,EAAC,MAAM;IACd;IACA,IAAIR,UAAU,KAAKS,SAAS,EAAE;MAAE;IAAQ;IACxC,IAAI,CAACV,qBAAqB,EAAE;MAAE;IAAQ;IACtCL,YAAY,CAACC,OAAO,CAACL,eAAe,EAAEgB,IAAI,CAACI,SAAS,CAACV,UAAU,CAAC,CAAC;EACnE,CAAC,EAAE,CAACA,UAAU,EAAED,qBAAqB,CAAC,CAAC;EAEvC,OAAO,CAACC,UAAU,EAAEC,aAAa,CAAC;AACpC;AAEA,SAASU,uBAAuBA,CAAAC,IAAA,EAA4C;EAAA,IAA3C;IAAEC,YAAY;IAAEC,OAAO;IAAEC;EAAe,CAAC,GAAAH,IAAA;EACxE;AACF;AACA;EACE,MAAMI,iBAAiB,GAAID,cAAc,KAAK,OAAO,IAAIF,YAAY,IAAI,CAACC,OAAQ;EAClF,MAAM,CAACd,UAAU,EAAEC,aAAa,CAAC,GAAGH,aAAa,CAAC,CAAC;EACnD,MAAMmB,SAAS,GAAGjB,UAAU,GAAG,CAAC;EAChC,MAAMkB,cAAc,GAAGA,CAAA,KAAM;IAAEjB,aAAa,CAACgB,SAAS,CAAC;EAAE,CAAC;EAC1D,MAAME,sBAAsB,GAAGF,SAAS,GAAG1B,sBAAsB,KAAK,CAAC;EACvE,OAAO,CAACyB,iBAAiB,EAAEG,sBAAsB,EAAED,cAAc,CAAC;AACpE;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcX,uBAAuB","ignoreList":[]}
1
+ {"version":3,"file":"hooks.js","names":["_react","require","_modelStore","_frontendPlatform","CLICK_COUNT_KEY","SHOW_MODAL_CLICK_COUNT","isLocalStorageAvailable","testKey","localStorage","setItem","removeItem","e","useClickCount","localStorageAvailable","clickCount","setClickCount","useState","clickString","getItem","clicks","JSON","parse","useEffect","undefined","stringify","useInCourseUpgradeModal","nextClick","countNextClick","shouldShowModalOnClick","isExperimentEnabledForOrg","org","OPTIMIZELY_MODAL_ROLLOUT_WHITELIST","getConfig","includes","useIsModalExperimentEnabled","courseId","verifiedMode","isStaff","useModel","enrollmentMode","enabledForOrg","console","info"],"sources":["../../src/upgrade-modal/hooks.js"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport { useState, useEffect } from 'react';\nimport { useModel } from '@src/generic/model-store';\nimport { getConfig } from '@edx/frontend-platform';\n\nconst CLICK_COUNT_KEY = 'VTR_IN_COURSE_MODAL_NEXT_CLICK_COUNT';\nconst SHOW_MODAL_CLICK_COUNT = 3;\n\nfunction isLocalStorageAvailable() {\n // A simple helper to check if localStorage is currently available\n const testKey = 'testKey';\n try {\n localStorage.setItem(testKey, testKey);\n localStorage.removeItem(testKey);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction useClickCount() {\n /**\n * Hook that tracks the number of times that a user has clicked something\n * and stores that number in localStorage (if available).\n *\n * Returns: [clickCount, setClickCount]\n * - clickCount (int): The current count of clicks\n * - setClickCount (func): Function to update the number of clicks\n */\n const localStorageAvailable = isLocalStorageAvailable();\n const [clickCount, setClickCount] = useState(() => {\n if (!localStorageAvailable) { return 0; }\n const clickString = localStorage.getItem(CLICK_COUNT_KEY);\n const clicks = JSON.parse(clickString);\n return clicks || 0;\n });\n\n useEffect(() => {\n // When clickCount changes, this will update it in localStorage\n if (clickCount === undefined) { return; }\n if (!localStorageAvailable) { return; }\n localStorage.setItem(CLICK_COUNT_KEY, JSON.stringify(clickCount));\n }, [clickCount, localStorageAvailable]);\n\n return [clickCount, setClickCount];\n}\n\nfunction useInCourseUpgradeModal() {\n /**\n * Hook that wraps around useClickCount to handle the \"modal show\" logic\n */\n const [clickCount, setClickCount] = useClickCount();\n const nextClick = clickCount + 1;\n const countNextClick = () => { setClickCount(nextClick); };\n const shouldShowModalOnClick = nextClick % SHOW_MODAL_CLICK_COUNT === 0;\n return [shouldShowModalOnClick, countNextClick];\n}\n\nfunction isExperimentEnabledForOrg(org) {\n const { OPTIMIZELY_MODAL_ROLLOUT_WHITELIST } = getConfig();\n if (!OPTIMIZELY_MODAL_ROLLOUT_WHITELIST) { return false; }\n return OPTIMIZELY_MODAL_ROLLOUT_WHITELIST.includes(org);\n}\n\nfunction useIsModalExperimentEnabled(courseId) {\n /** The following must be true for the experiment to be activated:\n * - The user must be an audit learner\n * - The user must not be staff\n * - The course must have a verified mode\n * - (During rollout) The org must be whitelisted\n */\n const {\n verifiedMode,\n org,\n isStaff,\n } = useModel('courseHomeMeta', courseId);\n const { enrollmentMode } = useModel('coursewareMeta', courseId);\n const enabledForOrg = isExperimentEnabledForOrg(org);\n // eslint-disable-next-line no-console\n console.info({\n org, enabledForOrg, enrollmentMode, isStaff, verifiedMode,\n });\n return enrollmentMode === 'audit' && !!verifiedMode && !isStaff && enabledForOrg;\n}\n\nexport {\n useInCourseUpgradeModal,\n useIsModalExperimentEnabled,\n};\n"],"mappings":";;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AAHA;;AAKA,MAAMG,eAAe,GAAG,sCAAsC;AAC9D,MAAMC,sBAAsB,GAAG,CAAC;AAEhC,SAASC,uBAAuBA,CAAA,EAAG;EACjC;EACA,MAAMC,OAAO,GAAG,SAAS;EACzB,IAAI;IACFC,YAAY,CAACC,OAAO,CAACF,OAAO,EAAEA,OAAO,CAAC;IACtCC,YAAY,CAACE,UAAU,CAACH,OAAO,CAAC;IAChC,OAAO,IAAI;EACb,CAAC,CAAC,OAAOI,CAAC,EAAE;IACV,OAAO,KAAK;EACd;AACF;AAEA,SAASC,aAAaA,CAAA,EAAG;EACvB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,qBAAqB,GAAGP,uBAAuB,CAAC,CAAC;EACvD,MAAM,CAACQ,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAM;IACjD,IAAI,CAACH,qBAAqB,EAAE;MAAE,OAAO,CAAC;IAAE;IACxC,MAAMI,WAAW,GAAGT,YAAY,CAACU,OAAO,CAACd,eAAe,CAAC;IACzD,MAAMe,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACJ,WAAW,CAAC;IACtC,OAAOE,MAAM,IAAI,CAAC;EACpB,CAAC,CAAC;EAEF,IAAAG,gBAAS,EAAC,MAAM;IACd;IACA,IAAIR,UAAU,KAAKS,SAAS,EAAE;MAAE;IAAQ;IACxC,IAAI,CAACV,qBAAqB,EAAE;MAAE;IAAQ;IACtCL,YAAY,CAACC,OAAO,CAACL,eAAe,EAAEgB,IAAI,CAACI,SAAS,CAACV,UAAU,CAAC,CAAC;EACnE,CAAC,EAAE,CAACA,UAAU,EAAED,qBAAqB,CAAC,CAAC;EAEvC,OAAO,CAACC,UAAU,EAAEC,aAAa,CAAC;AACpC;AAEA,SAASU,uBAAuBA,CAAA,EAAG;EACjC;AACF;AACA;EACE,MAAM,CAACX,UAAU,EAAEC,aAAa,CAAC,GAAGH,aAAa,CAAC,CAAC;EACnD,MAAMc,SAAS,GAAGZ,UAAU,GAAG,CAAC;EAChC,MAAMa,cAAc,GAAGA,CAAA,KAAM;IAAEZ,aAAa,CAACW,SAAS,CAAC;EAAE,CAAC;EAC1D,MAAME,sBAAsB,GAAGF,SAAS,GAAGrB,sBAAsB,KAAK,CAAC;EACvE,OAAO,CAACuB,sBAAsB,EAAED,cAAc,CAAC;AACjD;AAEA,SAASE,yBAAyBA,CAACC,GAAG,EAAE;EACtC,MAAM;IAAEC;EAAmC,CAAC,GAAG,IAAAC,2BAAS,EAAC,CAAC;EAC1D,IAAI,CAACD,kCAAkC,EAAE;IAAE,OAAO,KAAK;EAAE;EACzD,OAAOA,kCAAkC,CAACE,QAAQ,CAACH,GAAG,CAAC;AACzD;AAEA,SAASI,2BAA2BA,CAACC,QAAQ,EAAE;EAC7C;AACF;AACA;AACA;AACA;AACA;EACE,MAAM;IACJC,YAAY;IACZN,GAAG;IACHO;EACF,CAAC,GAAG,IAAAC,oBAAQ,EAAC,gBAAgB,EAAEH,QAAQ,CAAC;EACxC,MAAM;IAAEI;EAAe,CAAC,GAAG,IAAAD,oBAAQ,EAAC,gBAAgB,EAAEH,QAAQ,CAAC;EAC/D,MAAMK,aAAa,GAAGX,yBAAyB,CAACC,GAAG,CAAC;EACpD;EACAW,OAAO,CAACC,IAAI,CAAC;IACXZ,GAAG;IAAEU,aAAa;IAAED,cAAc;IAAEF,OAAO;IAAED;EAC/C,CAAC,CAAC;EACF,OAAOG,cAAc,KAAK,OAAO,IAAI,CAAC,CAACH,YAAY,IAAI,CAACC,OAAO,IAAIG,aAAa;AAClF","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edx/frontend-plugin-advertisements",
3
- "version": "1.23.2",
3
+ "version": "1.24.1",
4
4
  "description": "Frontend plugin for edX in course advertisements",
5
5
  "main": "dist/index.js",
6
6
  "repository": {