@edx/frontend-plugin-advertisements 2.16.0 → 2.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -21,7 +21,22 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
21
21
|
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; }
|
|
22
22
|
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; }
|
|
23
23
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
24
|
-
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 import/no-unresolved: 0 */
|
|
24
|
+
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 import/no-unresolved: 0 */
|
|
25
|
+
const trackOptimizelyEventWhenReady = async (optimizely, eventKey, userId, eventTags) => {
|
|
26
|
+
if (!optimizely) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
if (typeof optimizely.onReady === 'function') {
|
|
30
|
+
const readyResult = await optimizely.onReady();
|
|
31
|
+
if (!readyResult?.success) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
optimizely.track(eventKey, userId, eventTags);
|
|
36
|
+
return true;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
25
40
|
* Access Expiration top-of-courseware banner.
|
|
26
41
|
*
|
|
27
42
|
* This is the plugin-architecture equivalent of the Learning MFE's
|
|
@@ -50,25 +65,35 @@ const AccessExpirationAlert = _ref => {
|
|
|
50
65
|
const variant = accessExpiration?.variant;
|
|
51
66
|
(0, _react.useEffect)(() => {
|
|
52
67
|
if (!experimentKey || !variant || hasTrackedBannerView.current) {
|
|
53
|
-
return;
|
|
68
|
+
return undefined;
|
|
54
69
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
70
|
+
let isMounted = true;
|
|
71
|
+
const trackBannerShown = async () => {
|
|
72
|
+
try {
|
|
73
|
+
const optimizely = (0, _optimizely.getOptimizely)();
|
|
74
|
+
if (!optimizely) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
58
77
|
const {
|
|
59
78
|
userId
|
|
60
79
|
} = (0, _auth.getAuthenticatedUser)();
|
|
61
|
-
optimizely
|
|
80
|
+
const didTrack = await trackOptimizelyEventWhenReady(optimizely, 'audit_expiry_urgency_banner_shown', userId.toString(), {
|
|
62
81
|
experimentKey,
|
|
63
82
|
variant,
|
|
64
83
|
expiryDays,
|
|
65
84
|
courseId
|
|
66
85
|
});
|
|
67
|
-
|
|
86
|
+
if (didTrack && isMounted) {
|
|
87
|
+
hasTrackedBannerView.current = true;
|
|
88
|
+
}
|
|
89
|
+
} catch (error) {
|
|
90
|
+
// Never break the banner experience if analytics fails.
|
|
68
91
|
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
92
|
+
};
|
|
93
|
+
trackBannerShown();
|
|
94
|
+
return () => {
|
|
95
|
+
isMounted = false;
|
|
96
|
+
};
|
|
72
97
|
}, [courseId, experimentKey, expiryDays, variant]);
|
|
73
98
|
|
|
74
99
|
// Match original MFE logic.
|
|
@@ -99,7 +124,7 @@ const AccessExpirationAlert = _ref => {
|
|
|
99
124
|
const {
|
|
100
125
|
userId
|
|
101
126
|
} = (0, _auth.getAuthenticatedUser)();
|
|
102
|
-
optimizely
|
|
127
|
+
trackOptimizelyEventWhenReady(optimizely, 'audit_expiry_urgency_upgrade_clicked', userId.toString(), {
|
|
103
128
|
experimentKey,
|
|
104
129
|
variant,
|
|
105
130
|
expiryDays,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessExpirationAlert.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_analytics","_auth","_i18n","_paragon","_icons","_modelStore","_optimizely","_messages","_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","AccessExpirationAlert","_ref","courseId","intl","useIntl","hasTrackedBannerView","useRef","org","userTimezone","useModel","accessExpiration","timezoneFormatArgs","timeZone","experimentKey","expiryDays","variant","useEffect","current","optimizely","getOptimizely","userId","getAuthenticatedUser","track","toString","error","masqueradingExpiredCourse","expirationDate","upgradeDeadline","upgradeUrl","logClick","analyticsPageName","sendTrackEvent","org_key","courserun_key","linkCategory","linkName","linkType","pageName","deadlineMessage","jsxs","Fragment","children","jsx","FormattedMessage","id","defaultMessage","description","values","date","FormattedDate","day","month","year","Hyperlink","className","style","textDecoration","destination","onClick","formatMessage","messages","upgradeNow","Alert","icon","Info","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../src/access-expiration-alert/AccessExpirationAlert.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { FormattedMessage, FormattedDate, useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert, Hyperlink } from '@openedx/paragon';\nimport { Info } from '@openedx/paragon/icons';\n\nimport { useModel } from '@src/generic/model-store';\nimport { getOptimizely } from '../data/optimizely';\n\nimport messages from './messages';\n\n/**\n * Access Expiration top-of-courseware banner.\n *\n * This is the plugin-architecture equivalent of the Learning MFE's\n * `src/alerts/access-expiration-alert/AccessExpirationAlert.jsx`.\n *\n * It renders directly as a plugin widget (does NOT use the Learning MFE alert registration system).\n */\nconst AccessExpirationAlert = ({\n courseId,\n}) => {\n const intl = useIntl();\n const hasTrackedBannerView = useRef(false);\n\n const { org, userTimezone } = useModel('courseHomeMeta', courseId);\n const { accessExpiration } = useModel('coursewareMeta', courseId);\n\n const timezoneFormatArgs = userTimezone ? { timeZone: userTimezone } : {};\n const experimentKey = accessExpiration?.experimentKey;\n const expiryDays = accessExpiration?.expiryDays;\n const variant = accessExpiration?.variant;\n\n useEffect(() => {\n if (!experimentKey || !variant || hasTrackedBannerView.current) {\n return;\n }\n\n try {\n const optimizely = getOptimizely();\n if (optimizely) {\n const { userId } = getAuthenticatedUser();\n optimizely.track('audit_expiry_urgency_banner_shown', userId.toString(), {\n experimentKey,\n variant,\n expiryDays,\n courseId,\n });\n hasTrackedBannerView.current = true;\n }\n } catch (error) {\n // Never break the banner experience if analytics fails.\n }\n }, [courseId, experimentKey, expiryDays, variant]);\n\n // Match original MFE logic.\n if (!accessExpiration || accessExpiration.masqueradingExpiredCourse) {\n return null;\n }\n\n const {\n expirationDate,\n upgradeDeadline,\n upgradeUrl,\n } = accessExpiration;\n\n const logClick = () => {\n // Keep analytics identical to the temporary in-course wiring:\n // analyticsPageName === 'in_course'\n const analyticsPageName = 'in_course';\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n org_key: org,\n courserun_key: courseId,\n linkCategory: 'FBE_banner',\n linkName: `${analyticsPageName}_audit_access_expires`,\n linkType: 'link',\n pageName: analyticsPageName,\n });\n\n if (experimentKey && variant) {\n try {\n const optimizely = getOptimizely();\n if (optimizely) {\n const { userId } = getAuthenticatedUser();\n optimizely.track('audit_expiry_urgency_upgrade_clicked', userId.toString(), {\n experimentKey,\n variant,\n expiryDays,\n courseId,\n });\n }\n } catch (error) {\n // Never block the click-through path if analytics fails.\n }\n }\n };\n\n let deadlineMessage = null;\n if (upgradeDeadline && upgradeUrl) {\n deadlineMessage = (\n <>\n <br />\n <FormattedMessage\n id=\"learning.accessExpiration.deadline\"\n defaultMessage=\"Upgrade by {date} to get unlimited access to the course as long as it exists on the site.\"\n description=\"Warning shown to learner to upgrade while they are enrolled on the audit version and it's possible to upgrade\"\n values={{\n date: (\n <FormattedDate\n key=\"accessExpirationUpgradeDeadline\"\n day=\"numeric\"\n month=\"short\"\n year=\"numeric\"\n value={upgradeDeadline}\n {...timezoneFormatArgs}\n />\n ),\n }}\n />\n \n <Hyperlink\n className=\"font-weight-bold\"\n style={{ textDecoration: 'underline' }}\n destination={upgradeUrl}\n onClick={logClick}\n >\n {intl.formatMessage(messages.upgradeNow)}\n </Hyperlink>\n </>\n );\n }\n\n return (\n <Alert variant=\"info\" icon={Info}>\n <span className=\"font-weight-bold\">\n <FormattedMessage\n id=\"learning.accessExpiration.header\"\n defaultMessage=\"Audit Access Expires {date}\"\n description=\"Headline for auditing deadline\"\n values={{\n date: (\n <FormattedDate\n key=\"accessExpirationHeaderDate\"\n day=\"numeric\"\n month=\"short\"\n year=\"numeric\"\n value={expirationDate}\n {...timezoneFormatArgs}\n />\n ),\n }}\n />\n </span>\n <br />\n <FormattedMessage\n id=\"learning.accessExpiration.body\"\n defaultMessage=\"You lose all access to this course, including your progress, on {date}.\"\n description=\"Message body to tell learner the consequences of course expiration.\"\n values={{\n date: (\n <FormattedDate\n key=\"accessExpirationBodyDate\"\n day=\"numeric\"\n month=\"short\"\n year=\"numeric\"\n value={expirationDate}\n {...timezoneFormatArgs}\n />\n ),\n }}\n />\n {deadlineMessage}\n </Alert>\n );\n};\n\nAccessExpirationAlert.propTypes = {\n courseId: PropTypes.string.isRequired,\n};\n\nexport default AccessExpirationAlert;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"AccessExpirationAlert.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_analytics","_auth","_i18n","_paragon","_icons","_modelStore","_optimizely","_messages","_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","trackOptimizelyEventWhenReady","optimizely","eventKey","userId","eventTags","onReady","readyResult","success","track","AccessExpirationAlert","_ref","courseId","intl","useIntl","hasTrackedBannerView","useRef","org","userTimezone","useModel","accessExpiration","timezoneFormatArgs","timeZone","experimentKey","expiryDays","variant","useEffect","current","undefined","isMounted","trackBannerShown","getOptimizely","getAuthenticatedUser","didTrack","toString","error","masqueradingExpiredCourse","expirationDate","upgradeDeadline","upgradeUrl","logClick","analyticsPageName","sendTrackEvent","org_key","courserun_key","linkCategory","linkName","linkType","pageName","deadlineMessage","jsxs","Fragment","children","jsx","FormattedMessage","id","defaultMessage","description","values","date","FormattedDate","day","month","year","Hyperlink","className","style","textDecoration","destination","onClick","formatMessage","messages","upgradeNow","Alert","icon","Info","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../src/access-expiration-alert/AccessExpirationAlert.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { FormattedMessage, FormattedDate, useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert, Hyperlink } from '@openedx/paragon';\nimport { Info } from '@openedx/paragon/icons';\n\nimport { useModel } from '@src/generic/model-store';\nimport { getOptimizely } from '../data/optimizely';\n\nimport messages from './messages';\n\nconst trackOptimizelyEventWhenReady = async (optimizely, eventKey, userId, eventTags) => {\n if (!optimizely) {\n return false;\n }\n\n if (typeof optimizely.onReady === 'function') {\n const readyResult = await optimizely.onReady();\n if (!readyResult?.success) {\n return false;\n }\n }\n\n optimizely.track(eventKey, userId, eventTags);\n return true;\n};\n\n/**\n * Access Expiration top-of-courseware banner.\n *\n * This is the plugin-architecture equivalent of the Learning MFE's\n * `src/alerts/access-expiration-alert/AccessExpirationAlert.jsx`.\n *\n * It renders directly as a plugin widget (does NOT use the Learning MFE alert registration system).\n */\nconst AccessExpirationAlert = ({\n courseId,\n}) => {\n const intl = useIntl();\n const hasTrackedBannerView = useRef(false);\n\n const { org, userTimezone } = useModel('courseHomeMeta', courseId);\n const { accessExpiration } = useModel('coursewareMeta', courseId);\n\n const timezoneFormatArgs = userTimezone ? { timeZone: userTimezone } : {};\n const experimentKey = accessExpiration?.experimentKey;\n const expiryDays = accessExpiration?.expiryDays;\n const variant = accessExpiration?.variant;\n\n useEffect(() => {\n if (!experimentKey || !variant || hasTrackedBannerView.current) {\n return undefined;\n }\n\n let isMounted = true;\n\n const trackBannerShown = async () => {\n try {\n const optimizely = getOptimizely();\n if (!optimizely) {\n return;\n }\n\n const { userId } = getAuthenticatedUser();\n const didTrack = await trackOptimizelyEventWhenReady(\n optimizely,\n 'audit_expiry_urgency_banner_shown',\n userId.toString(),\n {\n experimentKey,\n variant,\n expiryDays,\n courseId,\n },\n );\n\n if (didTrack && isMounted) {\n hasTrackedBannerView.current = true;\n }\n } catch (error) {\n // Never break the banner experience if analytics fails.\n }\n };\n\n trackBannerShown();\n\n return () => {\n isMounted = false;\n };\n }, [courseId, experimentKey, expiryDays, variant]);\n\n // Match original MFE logic.\n if (!accessExpiration || accessExpiration.masqueradingExpiredCourse) {\n return null;\n }\n\n const {\n expirationDate,\n upgradeDeadline,\n upgradeUrl,\n } = accessExpiration;\n\n const logClick = () => {\n // Keep analytics identical to the temporary in-course wiring:\n // analyticsPageName === 'in_course'\n const analyticsPageName = 'in_course';\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n org_key: org,\n courserun_key: courseId,\n linkCategory: 'FBE_banner',\n linkName: `${analyticsPageName}_audit_access_expires`,\n linkType: 'link',\n pageName: analyticsPageName,\n });\n\n if (experimentKey && variant) {\n try {\n const optimizely = getOptimizely();\n if (optimizely) {\n const { userId } = getAuthenticatedUser();\n trackOptimizelyEventWhenReady(\n optimizely,\n 'audit_expiry_urgency_upgrade_clicked',\n userId.toString(),\n {\n experimentKey,\n variant,\n expiryDays,\n courseId,\n },\n );\n }\n } catch (error) {\n // Never block the click-through path if analytics fails.\n }\n }\n };\n\n let deadlineMessage = null;\n if (upgradeDeadline && upgradeUrl) {\n deadlineMessage = (\n <>\n <br />\n <FormattedMessage\n id=\"learning.accessExpiration.deadline\"\n defaultMessage=\"Upgrade by {date} to get unlimited access to the course as long as it exists on the site.\"\n description=\"Warning shown to learner to upgrade while they are enrolled on the audit version and it's possible to upgrade\"\n values={{\n date: (\n <FormattedDate\n key=\"accessExpirationUpgradeDeadline\"\n day=\"numeric\"\n month=\"short\"\n year=\"numeric\"\n value={upgradeDeadline}\n {...timezoneFormatArgs}\n />\n ),\n }}\n />\n \n <Hyperlink\n className=\"font-weight-bold\"\n style={{ textDecoration: 'underline' }}\n destination={upgradeUrl}\n onClick={logClick}\n >\n {intl.formatMessage(messages.upgradeNow)}\n </Hyperlink>\n </>\n );\n }\n\n return (\n <Alert variant=\"info\" icon={Info}>\n <span className=\"font-weight-bold\">\n <FormattedMessage\n id=\"learning.accessExpiration.header\"\n defaultMessage=\"Audit Access Expires {date}\"\n description=\"Headline for auditing deadline\"\n values={{\n date: (\n <FormattedDate\n key=\"accessExpirationHeaderDate\"\n day=\"numeric\"\n month=\"short\"\n year=\"numeric\"\n value={expirationDate}\n {...timezoneFormatArgs}\n />\n ),\n }}\n />\n </span>\n <br />\n <FormattedMessage\n id=\"learning.accessExpiration.body\"\n defaultMessage=\"You lose all access to this course, including your progress, on {date}.\"\n description=\"Message body to tell learner the consequences of course expiration.\"\n values={{\n date: (\n <FormattedDate\n key=\"accessExpirationBodyDate\"\n day=\"numeric\"\n month=\"short\"\n year=\"numeric\"\n value={expirationDate}\n {...timezoneFormatArgs}\n />\n ),\n }}\n />\n {deadlineMessage}\n </Alert>\n );\n};\n\nAccessExpirationAlert.propTypes = {\n courseId: PropTypes.string.isRequired,\n};\n\nexport default AccessExpirationAlert;\n"],"mappings":"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","ignoreList":[]}
|