@edx/frontend-plugin-advertisements 2.19.0 → 2.21.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.
@@ -23,47 +23,41 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
23
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; }
24
24
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
25
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', {
26
+ const AUDIT_EXPIRY_LOG_VERSION = 'audit-expiry-v4';
27
+ const trackOptimizelyEvent = (optimizely, eventKey, userId, eventTags) => {
28
+ (0, _logging.logInfo)('AuditExpiry trackOptimizelyEvent start', {
29
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
28
30
  eventKey,
29
31
  userId,
30
32
  hasOptimizely: Boolean(optimizely),
31
33
  eventTags
32
34
  });
33
35
  if (!optimizely) {
34
- (0, _logging.logInfo)('AuditExpiry trackOptimizelyEventWhenReady no optimizely', {
36
+ (0, _logging.logInfo)('AuditExpiry trackOptimizelyEvent no optimizely', {
37
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
35
38
  eventKey
36
39
  });
37
40
  return false;
38
41
  }
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', {
42
+ if (typeof optimizely.track !== 'function') {
43
+ (0, _logging.logInfo)('AuditExpiry trackOptimizelyEvent missing track method', {
44
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
45
45
  eventKey,
46
- readyResult,
47
- readySuccess: readyResult?.success,
48
- readyReason: readyResult?.reason
46
+ hasTrack: typeof optimizely.track === 'function',
47
+ hasOnReady: typeof optimizely.onReady === 'function'
49
48
  });
50
- if (!readyResult?.success) {
51
- (0, _logging.logInfo)('AuditExpiry trackOptimizelyEventWhenReady onReady not ready', {
52
- eventKey,
53
- readyResult,
54
- readySuccess: readyResult?.success,
55
- readyReason: readyResult?.reason
56
- });
57
- return false;
58
- }
49
+ return false;
59
50
  }
60
- (0, _logging.logInfo)('AuditExpiry trackOptimizelyEventWhenReady calling track', {
51
+ (0, _logging.logInfo)('AuditExpiry trackOptimizelyEvent calling track', {
52
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
61
53
  eventKey,
62
54
  userId,
63
- eventTags
55
+ eventTags,
56
+ hasOnReady: typeof optimizely.onReady === 'function'
64
57
  });
65
- optimizely.track(eventKey, userId, eventTags);
66
- (0, _logging.logInfo)('AuditExpiry trackOptimizelyEventWhenReady track called', {
58
+ optimizely.track(eventKey, userId, undefined, eventTags);
59
+ (0, _logging.logInfo)('AuditExpiry trackOptimizelyEvent track called', {
60
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
67
61
  eventKey
68
62
  });
69
63
  return true;
@@ -96,16 +90,9 @@ const AccessExpirationAlert = _ref => {
96
90
  const experimentKey = accessExpiration?.experimentKey;
97
91
  const expiryDays = accessExpiration?.expiryDays;
98
92
  const variant = accessExpiration?.variant;
99
- (0, _logging.logInfo)('AuditExpiry render', {
100
- courseId,
101
- hasAccessExpiration: Boolean(accessExpiration),
102
- experimentKey,
103
- variant,
104
- expiryDays,
105
- masqueradingExpiredCourse: accessExpiration?.masqueradingExpiredCourse
106
- });
107
93
  (0, _react.useEffect)(() => {
108
94
  (0, _logging.logInfo)('AuditExpiry useEffect entered', {
95
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
109
96
  courseId,
110
97
  experimentKey,
111
98
  variant,
@@ -114,6 +101,7 @@ const AccessExpirationAlert = _ref => {
114
101
  });
115
102
  if (!experimentKey || !variant || hasTrackedBannerView.current) {
116
103
  (0, _logging.logInfo)('AuditExpiry useEffect skipped', {
104
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
117
105
  courseId,
118
106
  experimentKey,
119
107
  variant,
@@ -126,6 +114,7 @@ const AccessExpirationAlert = _ref => {
126
114
  try {
127
115
  const optimizely = (0, _optimizely.getOptimizely)();
128
116
  (0, _logging.logInfo)('AuditExpiry trackBannerShown getOptimizely', {
117
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
129
118
  hasOptimizely: Boolean(optimizely),
130
119
  hasOnReady: typeof optimizely?.onReady === 'function',
131
120
  hasTrack: typeof optimizely?.track === 'function'
@@ -137,9 +126,10 @@ const AccessExpirationAlert = _ref => {
137
126
  userId
138
127
  } = (0, _auth.getAuthenticatedUser)();
139
128
  (0, _logging.logInfo)('AuditExpiry trackBannerShown user', {
129
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
140
130
  userId
141
131
  });
142
- const didTrack = await trackOptimizelyEventWhenReady(optimizely, 'audit_expiry_urgency_banner_shown', userId.toString(), {
132
+ const didTrack = trackOptimizelyEvent(optimizely, 'audit_expiry_urgency_banner_shown', userId.toString(), {
143
133
  experimentKey,
144
134
  variant,
145
135
  expiryDays,
@@ -148,6 +138,7 @@ const AccessExpirationAlert = _ref => {
148
138
  if (didTrack && isMounted) {
149
139
  hasTrackedBannerView.current = true;
150
140
  (0, _logging.logInfo)('AuditExpiry trackBannerShown marked tracked', {
141
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
151
142
  courseId,
152
143
  experimentKey,
153
144
  variant
@@ -155,6 +146,7 @@ const AccessExpirationAlert = _ref => {
155
146
  }
156
147
  } catch (error) {
157
148
  (0, _logging.logError)(error, {
149
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
158
150
  source: 'AuditExpiry trackBannerShown',
159
151
  courseId,
160
152
  experimentKey,
@@ -166,9 +158,6 @@ const AccessExpirationAlert = _ref => {
166
158
  trackBannerShown();
167
159
  return () => {
168
160
  isMounted = false;
169
- (0, _logging.logInfo)('AuditExpiry useEffect cleanup', {
170
- courseId
171
- });
172
161
  };
173
162
  }, [courseId, experimentKey, expiryDays, variant]);
174
163
 
@@ -183,6 +172,7 @@ const AccessExpirationAlert = _ref => {
183
172
  } = accessExpiration;
184
173
  const logClick = () => {
185
174
  (0, _logging.logInfo)('AuditExpiry logClick entered', {
175
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
186
176
  courseId,
187
177
  experimentKey,
188
178
  variant,
@@ -203,6 +193,7 @@ const AccessExpirationAlert = _ref => {
203
193
  try {
204
194
  const optimizely = (0, _optimizely.getOptimizely)();
205
195
  (0, _logging.logInfo)('AuditExpiry logClick getOptimizely', {
196
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
206
197
  hasOptimizely: Boolean(optimizely),
207
198
  hasOnReady: typeof optimizely?.onReady === 'function',
208
199
  hasTrack: typeof optimizely?.track === 'function'
@@ -212,9 +203,10 @@ const AccessExpirationAlert = _ref => {
212
203
  userId
213
204
  } = (0, _auth.getAuthenticatedUser)();
214
205
  (0, _logging.logInfo)('AuditExpiry logClick user', {
206
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
215
207
  userId
216
208
  });
217
- trackOptimizelyEventWhenReady(optimizely, 'audit_expiry_urgency_upgrade_clicked', userId.toString(), {
209
+ trackOptimizelyEvent(optimizely, 'audit_expiry_urgency_upgrade_clicked', userId.toString(), {
218
210
  experimentKey,
219
211
  variant,
220
212
  expiryDays,
@@ -223,6 +215,7 @@ const AccessExpirationAlert = _ref => {
223
215
  }
224
216
  } catch (error) {
225
217
  (0, _logging.logError)(error, {
218
+ debugVersion: AUDIT_EXPIRY_LOG_VERSION,
226
219
  source: 'AuditExpiry logClick',
227
220
  courseId,
228
221
  experimentKey,
@@ -1 +1 @@
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","readySuccess","success","readyReason","reason","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 readySuccess: readyResult?.success,\n readyReason: readyResult?.reason,\n });\n if (!readyResult?.success) {\n logInfo('AuditExpiry trackOptimizelyEventWhenReady onReady not ready', {\n eventKey,\n readyResult,\n readySuccess: readyResult?.success,\n readyReason: readyResult?.reason,\n });\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":[]}
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","AUDIT_EXPIRY_LOG_VERSION","trackOptimizelyEvent","optimizely","eventKey","userId","eventTags","logInfo","debugVersion","hasOptimizely","Boolean","track","hasTrack","hasOnReady","onReady","undefined","AccessExpirationAlert","_ref","courseId","intl","useIntl","hasTrackedBannerView","useRef","org","userTimezone","useModel","accessExpiration","timezoneFormatArgs","timeZone","experimentKey","expiryDays","variant","useEffect","alreadyTracked","current","isMounted","trackBannerShown","getOptimizely","getAuthenticatedUser","didTrack","toString","error","logError","source","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 { 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 AUDIT_EXPIRY_LOG_VERSION = 'audit-expiry-v4';\n\nconst trackOptimizelyEvent = (optimizely, eventKey, userId, eventTags) => {\n logInfo('AuditExpiry trackOptimizelyEvent start', {\n debugVersion: AUDIT_EXPIRY_LOG_VERSION,\n eventKey,\n userId,\n hasOptimizely: Boolean(optimizely),\n eventTags,\n });\n\n if (!optimizely) {\n logInfo('AuditExpiry trackOptimizelyEvent no optimizely', {\n debugVersion: AUDIT_EXPIRY_LOG_VERSION,\n eventKey,\n });\n return false;\n }\n\n if (typeof optimizely.track !== 'function') {\n logInfo('AuditExpiry trackOptimizelyEvent missing track method', {\n debugVersion: AUDIT_EXPIRY_LOG_VERSION,\n eventKey,\n hasTrack: typeof optimizely.track === 'function',\n hasOnReady: typeof optimizely.onReady === 'function',\n });\n return false;\n }\n\n logInfo('AuditExpiry trackOptimizelyEvent calling track', {\n debugVersion: AUDIT_EXPIRY_LOG_VERSION,\n eventKey,\n userId,\n eventTags,\n hasOnReady: typeof optimizely.onReady === 'function',\n });\n optimizely.track(eventKey, userId, undefined, eventTags);\n logInfo('AuditExpiry trackOptimizelyEvent track called', {\n debugVersion: AUDIT_EXPIRY_LOG_VERSION,\n eventKey,\n });\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 logInfo('AuditExpiry useEffect entered', {\n debugVersion: AUDIT_EXPIRY_LOG_VERSION,\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 debugVersion: AUDIT_EXPIRY_LOG_VERSION,\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 debugVersion: AUDIT_EXPIRY_LOG_VERSION,\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', {\n debugVersion: AUDIT_EXPIRY_LOG_VERSION,\n userId,\n });\n const didTrack = trackOptimizelyEvent(\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 debugVersion: AUDIT_EXPIRY_LOG_VERSION,\n courseId,\n experimentKey,\n variant,\n });\n }\n } catch (error) {\n logError(error, {\n debugVersion: AUDIT_EXPIRY_LOG_VERSION,\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 };\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 debugVersion: AUDIT_EXPIRY_LOG_VERSION,\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 debugVersion: AUDIT_EXPIRY_LOG_VERSION,\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', {\n debugVersion: AUDIT_EXPIRY_LOG_VERSION,\n userId,\n });\n trackOptimizelyEvent(\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 debugVersion: AUDIT_EXPIRY_LOG_VERSION,\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.19.0",
3
+ "version": "2.21.0",
4
4
  "description": "Frontend plugin for edX in course advertisements",
5
5
  "main": "dist/index.js",
6
6
  "repository": {