@edx/frontend-plugin-advertisements 2.16.0 → 2.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,6 +9,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _analytics = require("@edx/frontend-platform/analytics");
10
10
  var _auth = require("@edx/frontend-platform/auth");
11
11
  var _i18n = require("@edx/frontend-platform/i18n");
12
+ var _logging = require("@edx/frontend-platform/logging");
12
13
  var _paragon = require("@openedx/paragon");
13
14
  var _icons = require("@openedx/paragon/icons");
14
15
  var _modelStore = require("@src/generic/model-store");
@@ -21,7 +22,46 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
21
22
  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
23
  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
24
  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 */ /**
25
+ 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 */
26
+ const trackOptimizelyEventWhenReady = async (optimizely, eventKey, userId, eventTags) => {
27
+ (0, _logging.logInfo)('AuditExpiry trackOptimizelyEventWhenReady start', {
28
+ eventKey,
29
+ userId,
30
+ hasOptimizely: Boolean(optimizely),
31
+ eventTags
32
+ });
33
+ if (!optimizely) {
34
+ (0, _logging.logInfo)('AuditExpiry trackOptimizelyEventWhenReady no optimizely', {
35
+ eventKey
36
+ });
37
+ return false;
38
+ }
39
+ if (typeof optimizely.onReady === 'function') {
40
+ (0, _logging.logInfo)('AuditExpiry trackOptimizelyEventWhenReady waiting onReady', {
41
+ eventKey
42
+ });
43
+ const readyResult = await optimizely.onReady();
44
+ (0, _logging.logInfo)('AuditExpiry trackOptimizelyEventWhenReady onReady result', {
45
+ eventKey,
46
+ readyResult
47
+ });
48
+ if (!readyResult?.success) {
49
+ return false;
50
+ }
51
+ }
52
+ (0, _logging.logInfo)('AuditExpiry trackOptimizelyEventWhenReady calling track', {
53
+ eventKey,
54
+ userId,
55
+ eventTags
56
+ });
57
+ optimizely.track(eventKey, userId, eventTags);
58
+ (0, _logging.logInfo)('AuditExpiry trackOptimizelyEventWhenReady track called', {
59
+ eventKey
60
+ });
61
+ return true;
62
+ };
63
+
64
+ /**
25
65
  * Access Expiration top-of-courseware banner.
26
66
  *
27
67
  * This is the plugin-architecture equivalent of the Learning MFE's
@@ -48,27 +88,80 @@ const AccessExpirationAlert = _ref => {
48
88
  const experimentKey = accessExpiration?.experimentKey;
49
89
  const expiryDays = accessExpiration?.expiryDays;
50
90
  const variant = accessExpiration?.variant;
91
+ (0, _logging.logInfo)('AuditExpiry render', {
92
+ courseId,
93
+ hasAccessExpiration: Boolean(accessExpiration),
94
+ experimentKey,
95
+ variant,
96
+ expiryDays,
97
+ masqueradingExpiredCourse: accessExpiration?.masqueradingExpiredCourse
98
+ });
51
99
  (0, _react.useEffect)(() => {
100
+ (0, _logging.logInfo)('AuditExpiry useEffect entered', {
101
+ courseId,
102
+ experimentKey,
103
+ variant,
104
+ expiryDays,
105
+ alreadyTracked: hasTrackedBannerView.current
106
+ });
52
107
  if (!experimentKey || !variant || hasTrackedBannerView.current) {
53
- return;
108
+ (0, _logging.logInfo)('AuditExpiry useEffect skipped', {
109
+ courseId,
110
+ experimentKey,
111
+ variant,
112
+ alreadyTracked: hasTrackedBannerView.current
113
+ });
114
+ return undefined;
54
115
  }
55
- try {
56
- const optimizely = (0, _optimizely.getOptimizely)();
57
- if (optimizely) {
116
+ let isMounted = true;
117
+ const trackBannerShown = async () => {
118
+ try {
119
+ const optimizely = (0, _optimizely.getOptimizely)();
120
+ (0, _logging.logInfo)('AuditExpiry trackBannerShown getOptimizely', {
121
+ hasOptimizely: Boolean(optimizely),
122
+ hasOnReady: typeof optimizely?.onReady === 'function',
123
+ hasTrack: typeof optimizely?.track === 'function'
124
+ });
125
+ if (!optimizely) {
126
+ return;
127
+ }
58
128
  const {
59
129
  userId
60
130
  } = (0, _auth.getAuthenticatedUser)();
61
- optimizely.track('audit_expiry_urgency_banner_shown', userId.toString(), {
131
+ (0, _logging.logInfo)('AuditExpiry trackBannerShown user', {
132
+ userId
133
+ });
134
+ const didTrack = await trackOptimizelyEventWhenReady(optimizely, 'audit_expiry_urgency_banner_shown', userId.toString(), {
62
135
  experimentKey,
63
136
  variant,
64
137
  expiryDays,
65
138
  courseId
66
139
  });
67
- hasTrackedBannerView.current = true;
140
+ if (didTrack && isMounted) {
141
+ hasTrackedBannerView.current = true;
142
+ (0, _logging.logInfo)('AuditExpiry trackBannerShown marked tracked', {
143
+ courseId,
144
+ experimentKey,
145
+ variant
146
+ });
147
+ }
148
+ } catch (error) {
149
+ (0, _logging.logError)(error, {
150
+ source: 'AuditExpiry trackBannerShown',
151
+ courseId,
152
+ experimentKey,
153
+ variant
154
+ });
155
+ // Never break the banner experience if analytics fails.
68
156
  }
69
- } catch (error) {
70
- // Never break the banner experience if analytics fails.
71
- }
157
+ };
158
+ trackBannerShown();
159
+ return () => {
160
+ isMounted = false;
161
+ (0, _logging.logInfo)('AuditExpiry useEffect cleanup', {
162
+ courseId
163
+ });
164
+ };
72
165
  }, [courseId, experimentKey, expiryDays, variant]);
73
166
 
74
167
  // Match original MFE logic.
@@ -81,6 +174,12 @@ const AccessExpirationAlert = _ref => {
81
174
  upgradeUrl
82
175
  } = accessExpiration;
83
176
  const logClick = () => {
177
+ (0, _logging.logInfo)('AuditExpiry logClick entered', {
178
+ courseId,
179
+ experimentKey,
180
+ variant,
181
+ expiryDays
182
+ });
84
183
  // Keep analytics identical to the temporary in-course wiring:
85
184
  // analyticsPageName === 'in_course'
86
185
  const analyticsPageName = 'in_course';
@@ -95,11 +194,19 @@ const AccessExpirationAlert = _ref => {
95
194
  if (experimentKey && variant) {
96
195
  try {
97
196
  const optimizely = (0, _optimizely.getOptimizely)();
197
+ (0, _logging.logInfo)('AuditExpiry logClick getOptimizely', {
198
+ hasOptimizely: Boolean(optimizely),
199
+ hasOnReady: typeof optimizely?.onReady === 'function',
200
+ hasTrack: typeof optimizely?.track === 'function'
201
+ });
98
202
  if (optimizely) {
99
203
  const {
100
204
  userId
101
205
  } = (0, _auth.getAuthenticatedUser)();
102
- optimizely.track('audit_expiry_urgency_upgrade_clicked', userId.toString(), {
206
+ (0, _logging.logInfo)('AuditExpiry logClick user', {
207
+ userId
208
+ });
209
+ trackOptimizelyEventWhenReady(optimizely, 'audit_expiry_urgency_upgrade_clicked', userId.toString(), {
103
210
  experimentKey,
104
211
  variant,
105
212
  expiryDays,
@@ -107,6 +214,12 @@ const AccessExpirationAlert = _ref => {
107
214
  });
108
215
  }
109
216
  } catch (error) {
217
+ (0, _logging.logError)(error, {
218
+ source: 'AuditExpiry logClick',
219
+ courseId,
220
+ experimentKey,
221
+ variant
222
+ });
110
223
  // Never block the click-through path if analytics fails.
111
224
  }
112
225
  }
@@ -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 &nbsp;\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","_logging","_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","logInfo","hasOptimizely","Boolean","onReady","readyResult","success","track","AccessExpirationAlert","_ref","courseId","intl","useIntl","hasTrackedBannerView","useRef","org","userTimezone","useModel","accessExpiration","timezoneFormatArgs","timeZone","experimentKey","expiryDays","variant","hasAccessExpiration","masqueradingExpiredCourse","useEffect","alreadyTracked","current","undefined","isMounted","trackBannerShown","getOptimizely","hasOnReady","hasTrack","getAuthenticatedUser","didTrack","toString","error","logError","source","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 { logError, logInfo } from '@edx/frontend-platform/logging';\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 logInfo('AuditExpiry trackOptimizelyEventWhenReady start', {\n eventKey,\n userId,\n hasOptimizely: Boolean(optimizely),\n eventTags,\n });\n\n if (!optimizely) {\n logInfo('AuditExpiry trackOptimizelyEventWhenReady no optimizely', { eventKey });\n return false;\n }\n\n if (typeof optimizely.onReady === 'function') {\n logInfo('AuditExpiry trackOptimizelyEventWhenReady waiting onReady', { eventKey });\n const readyResult = await optimizely.onReady();\n logInfo('AuditExpiry trackOptimizelyEventWhenReady onReady result', {\n eventKey,\n readyResult,\n });\n if (!readyResult?.success) {\n return false;\n }\n }\n\n logInfo('AuditExpiry trackOptimizelyEventWhenReady calling track', {\n eventKey,\n userId,\n eventTags,\n });\n optimizely.track(eventKey, userId, eventTags);\n logInfo('AuditExpiry trackOptimizelyEventWhenReady track called', { eventKey });\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 logInfo('AuditExpiry render', {\n courseId,\n hasAccessExpiration: Boolean(accessExpiration),\n experimentKey,\n variant,\n expiryDays,\n masqueradingExpiredCourse: accessExpiration?.masqueradingExpiredCourse,\n });\n\n useEffect(() => {\n logInfo('AuditExpiry useEffect entered', {\n courseId,\n experimentKey,\n variant,\n expiryDays,\n alreadyTracked: hasTrackedBannerView.current,\n });\n\n if (!experimentKey || !variant || hasTrackedBannerView.current) {\n logInfo('AuditExpiry useEffect skipped', {\n courseId,\n experimentKey,\n variant,\n alreadyTracked: hasTrackedBannerView.current,\n });\n return undefined;\n }\n\n let isMounted = true;\n\n const trackBannerShown = async () => {\n try {\n const optimizely = getOptimizely();\n logInfo('AuditExpiry trackBannerShown getOptimizely', {\n hasOptimizely: Boolean(optimizely),\n hasOnReady: typeof optimizely?.onReady === 'function',\n hasTrack: typeof optimizely?.track === 'function',\n });\n if (!optimizely) {\n return;\n }\n\n const { userId } = getAuthenticatedUser();\n logInfo('AuditExpiry trackBannerShown user', { userId });\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 logInfo('AuditExpiry trackBannerShown marked tracked', {\n courseId,\n experimentKey,\n variant,\n });\n }\n } catch (error) {\n logError(error, {\n source: 'AuditExpiry trackBannerShown',\n courseId,\n experimentKey,\n variant,\n });\n // Never break the banner experience if analytics fails.\n }\n };\n\n trackBannerShown();\n\n return () => {\n isMounted = false;\n logInfo('AuditExpiry useEffect cleanup', { courseId });\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 logInfo('AuditExpiry logClick entered', {\n courseId,\n experimentKey,\n variant,\n expiryDays,\n });\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 logInfo('AuditExpiry logClick getOptimizely', {\n hasOptimizely: Boolean(optimizely),\n hasOnReady: typeof optimizely?.onReady === 'function',\n hasTrack: typeof optimizely?.track === 'function',\n });\n if (optimizely) {\n const { userId } = getAuthenticatedUser();\n logInfo('AuditExpiry logClick user', { userId });\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 logError(error, {\n source: 'AuditExpiry logClick',\n courseId,\n experimentKey,\n variant,\n });\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 &nbsp;\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":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edx/frontend-plugin-advertisements",
3
- "version": "2.16.0",
3
+ "version": "2.18.0",
4
4
  "description": "Frontend plugin for edX in course advertisements",
5
5
  "main": "dist/index.js",
6
6
  "repository": {