@edx/frontend-plugin-advertisements 1.25.3 → 1.26.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.
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
8
|
-
var _frontendPlatform = require("@edx/frontend-platform");
|
|
9
8
|
var _DefaultUpgradeModal = _interopRequireDefault(require("./DefaultUpgradeModal"));
|
|
10
9
|
var _ExperimentalUpgradeModal = _interopRequireDefault(require("./ExperimentalUpgradeModal"));
|
|
11
10
|
var _hooks = require("./hooks");
|
|
@@ -18,7 +17,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
18
17
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
19
18
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
20
19
|
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
|
-
(0, _frontendPlatform.ensureConfig)(['OPTIMIZELY_MODAL_ROLLOUT_WHITELIST'], 'Optimizely In-Course Modal rollout config');
|
|
22
20
|
const UpgradeModalWrapper = props => {
|
|
23
21
|
const {
|
|
24
22
|
courseId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpgradeModalWrapper.js","names":["_propTypes","_interopRequireDefault","require","
|
|
1
|
+
{"version":3,"file":"UpgradeModalWrapper.js","names":["_propTypes","_interopRequireDefault","require","_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","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';\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\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":[]}
|
|
@@ -7,7 +7,6 @@ exports.useInCourseUpgradeModal = useInCourseUpgradeModal;
|
|
|
7
7
|
exports.useIsModalExperimentEnabled = useIsModalExperimentEnabled;
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _modelStore = require("@src/generic/model-store");
|
|
10
|
-
var _frontendPlatform = require("@edx/frontend-platform");
|
|
11
10
|
/* eslint import/no-unresolved: 0 */
|
|
12
11
|
|
|
13
12
|
const CLICK_COUNT_KEY = 'VTR_IN_COURSE_MODAL_NEXT_CLICK_COUNT';
|
|
@@ -65,15 +64,6 @@ function useInCourseUpgradeModal() {
|
|
|
65
64
|
const shouldShowModalOnClick = nextClick % SHOW_MODAL_CLICK_COUNT === 0;
|
|
66
65
|
return [shouldShowModalOnClick, countNextClick];
|
|
67
66
|
}
|
|
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
67
|
function useIsModalExperimentEnabled(courseId) {
|
|
78
68
|
/** The following must be true for the experiment to be activated:
|
|
79
69
|
* - The user must be an audit learner
|
|
@@ -83,21 +73,11 @@ function useIsModalExperimentEnabled(courseId) {
|
|
|
83
73
|
*/
|
|
84
74
|
const {
|
|
85
75
|
verifiedMode,
|
|
86
|
-
org,
|
|
87
76
|
isStaff
|
|
88
77
|
} = (0, _modelStore.useModel)('courseHomeMeta', courseId);
|
|
89
78
|
const {
|
|
90
79
|
enrollmentMode
|
|
91
80
|
} = (0, _modelStore.useModel)('coursewareMeta', courseId);
|
|
92
|
-
|
|
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;
|
|
81
|
+
return enrollmentMode === 'audit' && !!verifiedMode && !isStaff;
|
|
102
82
|
}
|
|
103
83
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","names":["_react","require","_modelStore","
|
|
1
|
+
{"version":3,"file":"hooks.js","names":["_react","require","_modelStore","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","useIsModalExperimentEnabled","courseId","verifiedMode","isStaff","useModel","enrollmentMode"],"sources":["../../src/upgrade-modal/hooks.js"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport { useState, useEffect } from 'react';\nimport { useModel } from '@src/generic/model-store';\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 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 isStaff,\n } = useModel('courseHomeMeta', courseId);\n const { enrollmentMode } = useModel('coursewareMeta', courseId);\n\n return enrollmentMode === 'audit' && !!verifiedMode && !isStaff;\n}\n\nexport {\n useInCourseUpgradeModal,\n useIsModalExperimentEnabled,\n};\n"],"mappings":";;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAFA;;AAIA,MAAME,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,2BAA2BA,CAACC,QAAQ,EAAE;EAC7C;AACF;AACA;AACA;AACA;AACA;EACE,MAAM;IACJC,YAAY;IACZC;EACF,CAAC,GAAG,IAAAC,oBAAQ,EAAC,gBAAgB,EAAEH,QAAQ,CAAC;EACxC,MAAM;IAAEI;EAAe,CAAC,GAAG,IAAAD,oBAAQ,EAAC,gBAAgB,EAAEH,QAAQ,CAAC;EAE/D,OAAOI,cAAc,KAAK,OAAO,IAAI,CAAC,CAACH,YAAY,IAAI,CAACC,OAAO;AACjE","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edx/frontend-plugin-advertisements",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.26.1",
|
|
4
4
|
"description": "Frontend plugin for edX in course advertisements",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -57,16 +57,16 @@
|
|
|
57
57
|
"peerDependencies": {
|
|
58
58
|
"@edx/brand": "npm:@edx/brand-edx.org@^2.1.2",
|
|
59
59
|
"@edx/frontend-platform": "^8.0.0",
|
|
60
|
-
"@fortawesome/fontawesome-svg-core": "
|
|
61
|
-
"@fortawesome/free-brands-svg-icons": "
|
|
62
|
-
"@fortawesome/free-regular-svg-icons": "
|
|
63
|
-
"@fortawesome/free-solid-svg-icons": "
|
|
60
|
+
"@fortawesome/fontawesome-svg-core": "1.3.0",
|
|
61
|
+
"@fortawesome/free-brands-svg-icons": "5.15.4",
|
|
62
|
+
"@fortawesome/free-regular-svg-icons": "5.15.4",
|
|
63
|
+
"@fortawesome/free-solid-svg-icons": "5.15.4",
|
|
64
64
|
"@fortawesome/react-fontawesome": "^0.1.4",
|
|
65
65
|
"@openedx/paragon": "^22.1.1",
|
|
66
|
-
"classnames": "
|
|
67
|
-
"core-js": "
|
|
68
|
-
"prop-types": "
|
|
69
|
-
"react": "
|
|
70
|
-
"regenerator-runtime": "
|
|
66
|
+
"classnames": "2.3.2",
|
|
67
|
+
"core-js": "3.22.2",
|
|
68
|
+
"prop-types": "15.8.1",
|
|
69
|
+
"react": "17.0.2",
|
|
70
|
+
"regenerator-runtime": "0.13.11"
|
|
71
71
|
}
|
|
72
72
|
}
|