@instructure/quiz-core 17.48.1-rc.2 → 17.48.1-rc.4
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.
- package/es/common/components/RceConfigProvider/index.js +14 -0
- package/es/common/components/RceConfigProvider/presenter.js +201 -0
- package/es/common/components/RceConfigProvider/rceConfigErrorHandler.js +34 -0
- package/es/common/components/RceConfigProvider/rceConfigErrorMessages.js +21 -0
- package/es/common/components/RceConfigProvider/rceConfigFetcher.js +55 -0
- package/es/common/components/RceConfigProvider/rceConfigMapper.js +31 -0
- package/es/common/components/RceConfigProvider/rceConfigUtils.js +6 -0
- package/es/common/components/SDKApp/index.js +1 -1
- package/lib/common/components/RceConfigProvider/index.js +26 -0
- package/lib/common/components/RceConfigProvider/presenter.js +225 -0
- package/lib/common/components/RceConfigProvider/rceConfigErrorHandler.js +52 -0
- package/lib/common/components/RceConfigProvider/rceConfigErrorMessages.js +46 -0
- package/lib/common/components/RceConfigProvider/rceConfigFetcher.js +67 -0
- package/lib/common/components/RceConfigProvider/rceConfigMapper.js +44 -0
- package/lib/common/components/RceConfigProvider/rceConfigUtils.js +18 -0
- package/lib/common/components/SDKApp/index.js +3 -3
- package/package.json +9 -9
- package/es/common/components/RceConfigProvider/RceConfigProvider.js +0 -261
- package/lib/common/components/RceConfigProvider/RceConfigProvider.js +0 -290
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.userAlertMsgBuilding = exports.userAlertMsgTaking = exports.quizLogMsgFailedConfigFetch = exports.quizLogMsgInvalidParams = exports.quizLogMsgErrorDuringTaking = void 0;
|
|
9
|
+
|
|
10
|
+
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
11
|
+
|
|
12
|
+
var _quizInteractions = require("@instructure/quiz-interactions");
|
|
13
|
+
|
|
14
|
+
var quizLogMsgErrorDuringTaking = function quizLogMsgErrorDuringTaking(stem) {
|
|
15
|
+
var normalizedStem = stem !== null && stem !== void 0 ? stem : 'Unknown stem';
|
|
16
|
+
var extractedText = (0, _quizInteractions.extractTextFromHtml)(normalizedStem);
|
|
17
|
+
return (0, _formatMessage.default)('Error while answering "{stem}": Full functionality of the Rich Content Editor may not have been available to the user.', {
|
|
18
|
+
stem: extractedText
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
exports.quizLogMsgErrorDuringTaking = quizLogMsgErrorDuringTaking;
|
|
23
|
+
|
|
24
|
+
var quizLogMsgInvalidParams = function quizLogMsgInvalidParams() {
|
|
25
|
+
return (0, _formatMessage.default)('Error: Full functionality of the Rich Content Editor may not have been available to the user.');
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
exports.quizLogMsgInvalidParams = quizLogMsgInvalidParams;
|
|
29
|
+
|
|
30
|
+
var quizLogMsgFailedConfigFetch = function quizLogMsgFailedConfigFetch() {
|
|
31
|
+
return (0, _formatMessage.default)('Error: Full functionality of the Rich Content Editor including accessibility features may not have been available to the user.');
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
exports.quizLogMsgFailedConfigFetch = quizLogMsgFailedConfigFetch;
|
|
35
|
+
|
|
36
|
+
var userAlertMsgTaking = function userAlertMsgTaking() {
|
|
37
|
+
return (0, _formatMessage.default)('The Rich Content Editor has encountered an issue. It has been logged for your instructor to review. Please refresh and try again.');
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
exports.userAlertMsgTaking = userAlertMsgTaking;
|
|
41
|
+
|
|
42
|
+
var userAlertMsgBuilding = function userAlertMsgBuilding() {
|
|
43
|
+
return (0, _formatMessage.default)('The Rich Content Editor has encountered an issue. Please refresh and try again.');
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
exports.userAlertMsgBuilding = userAlertMsgBuilding;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.fetchRceConfig = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var buildRceConfigUrl = function buildRceConfigUrl(host, contextType, contextId) {
|
|
15
|
+
var base = host.match(/^https?:\/\//) ? host : "".concat(window.location.protocol, "//").concat(host);
|
|
16
|
+
var url = new URL('/api/rceConfig', base);
|
|
17
|
+
contextType && url.searchParams.append('contextType', contextType);
|
|
18
|
+
contextId && url.searchParams.append('contextId', contextId);
|
|
19
|
+
return url;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
var fetchRceConfig = /*#__PURE__*/function () {
|
|
23
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(rcsHost, contextType, contextId, jwt) {
|
|
24
|
+
var rceConfigUrl, response;
|
|
25
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
26
|
+
while (1) {
|
|
27
|
+
switch (_context.prev = _context.next) {
|
|
28
|
+
case 0:
|
|
29
|
+
rceConfigUrl = buildRceConfigUrl(rcsHost, contextType, contextId);
|
|
30
|
+
_context.next = 3;
|
|
31
|
+
return fetch(rceConfigUrl.href, {
|
|
32
|
+
headers: {
|
|
33
|
+
'Authorization': "Bearer ".concat(jwt)
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
case 3:
|
|
38
|
+
response = _context.sent;
|
|
39
|
+
|
|
40
|
+
if (response.ok) {
|
|
41
|
+
_context.next = 6;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
throw "Failed to fetch, response status: ".concat(response.status);
|
|
46
|
+
|
|
47
|
+
case 6:
|
|
48
|
+
_context.next = 8;
|
|
49
|
+
return response.json();
|
|
50
|
+
|
|
51
|
+
case 8:
|
|
52
|
+
return _context.abrupt("return", _context.sent);
|
|
53
|
+
|
|
54
|
+
case 9:
|
|
55
|
+
case "end":
|
|
56
|
+
return _context.stop();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}, _callee);
|
|
60
|
+
}));
|
|
61
|
+
|
|
62
|
+
return function fetchRceConfig(_x, _x2, _x3, _x4) {
|
|
63
|
+
return _ref.apply(this, arguments);
|
|
64
|
+
};
|
|
65
|
+
}();
|
|
66
|
+
|
|
67
|
+
exports.fetchRceConfig = fetchRceConfig;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.mapParamsToRceConfigContext = void 0;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _quizCommon = require("@instructure/quiz-common");
|
|
13
|
+
|
|
14
|
+
var _rceConfigUtils = require("./rceConfigUtils.js");
|
|
15
|
+
|
|
16
|
+
var mapFeatureFlags = function mapFeatureFlags(flags) {
|
|
17
|
+
var _ref;
|
|
18
|
+
|
|
19
|
+
return _ref = {}, (0, _defineProperty2.default)(_ref, _quizCommon.RceConfigKeys.isNewRCEEnabled, (flags === null || flags === void 0 ? void 0 : flags.isNewRCEEnabled) || false), (0, _defineProperty2.default)(_ref, _quizCommon.RceConfigKeys.isNewRCERendererEnabled, (flags === null || flags === void 0 ? void 0 : flags.isNewRCERendererEnabled) || false), (0, _defineProperty2.default)(_ref, _quizCommon.RceConfigKeys.isNewRCEAppsEnabled, (flags === null || flags === void 0 ? void 0 : flags.isNewRCEAppsEnabled) || false), _ref;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
var mapRcs = function mapRcs(rcsParams, canvasConfig) {
|
|
23
|
+
if (rcsParams && (0, _rceConfigUtils.hasAllPropsForRcs)(rcsParams) && canvasConfig) {
|
|
24
|
+
var _ref2;
|
|
25
|
+
|
|
26
|
+
return _ref2 = {}, (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.canvasUserId, rcsParams.canvasUserId), (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.contextId, rcsParams.contextId), (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.contextType, rcsParams.contextType), (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.rcsHost, rcsParams.rcsHost), (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.rcsJwt, rcsParams.jwt), (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.rcsJwtRefreshFn, rcsParams.refreshToken), (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.canvasConfig, canvasConfig), _ref2;
|
|
27
|
+
} else {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
var rendererEnhancement = function rendererEnhancement(rendererParams) {
|
|
33
|
+
return (0, _defineProperty2.default)({}, _quizCommon.RceConfigKeys.canvasOrigin, (rendererParams === null || rendererParams === void 0 ? void 0 : rendererParams.canvasOrigin) || null);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
var mapParamsToRceConfigContext = function mapParamsToRceConfigContext(flags, rcsParams, rendererParams, canvasConfig) {
|
|
37
|
+
return {
|
|
38
|
+
featureFlags: mapFeatureFlags(flags),
|
|
39
|
+
rcs: mapRcs(rcsParams, canvasConfig),
|
|
40
|
+
rendererEnhancement: rendererEnhancement(rendererParams)
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
exports.mapParamsToRceConfigContext = mapParamsToRceConfigContext;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isRce5Disabled = exports.hasAllPropsForRcs = void 0;
|
|
7
|
+
|
|
8
|
+
var hasAllPropsForRcs = function hasAllPropsForRcs(rcsParams) {
|
|
9
|
+
return !!((rcsParams === null || rcsParams === void 0 ? void 0 : rcsParams.contextId) && (rcsParams === null || rcsParams === void 0 ? void 0 : rcsParams.contextType) && (rcsParams === null || rcsParams === void 0 ? void 0 : rcsParams.canvasUserId) && (rcsParams === null || rcsParams === void 0 ? void 0 : rcsParams.rcsHost) && (rcsParams === null || rcsParams === void 0 ? void 0 : rcsParams.refreshToken) && (rcsParams === null || rcsParams === void 0 ? void 0 : rcsParams.jwt));
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
exports.hasAllPropsForRcs = hasAllPropsForRcs;
|
|
13
|
+
|
|
14
|
+
var isRce5Disabled = function isRce5Disabled(flags) {
|
|
15
|
+
return !(flags === null || flags === void 0 ? void 0 : flags.isNewRCEEnabled) && !(flags === null || flags === void 0 ? void 0 : flags.isNewRCERendererEnabled);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.isRce5Disabled = isRce5Disabled;
|
|
@@ -53,9 +53,9 @@ var _index = _interopRequireDefault(require("../ConfirmationModal/index.js"));
|
|
|
53
53
|
|
|
54
54
|
var _setupFormatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/util/setupFormatMessage"));
|
|
55
55
|
|
|
56
|
-
var
|
|
56
|
+
var _index2 = _interopRequireDefault(require("../RceConfigProvider/index.js"));
|
|
57
57
|
|
|
58
|
-
var
|
|
58
|
+
var _index3 = require("../ApiFeatureFlagInitializer/index.js");
|
|
59
59
|
|
|
60
60
|
var _dec, _class, _class2, _temp;
|
|
61
61
|
|
|
@@ -169,7 +169,7 @@ var SDKApp = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_
|
|
|
169
169
|
context = this.context;
|
|
170
170
|
return /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
|
|
171
171
|
store: store
|
|
172
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
172
|
+
}, /*#__PURE__*/_react.default.createElement(_index3.ApiFeatureFlagInitializer, null, /*#__PURE__*/_react.default.createElement(_index2.default, this.props.rceConfig, /*#__PURE__*/_react.default.createElement(_uiI18n.ApplyLocale, {
|
|
173
173
|
locale: (0, _quizCommon.getLocale)(props, context),
|
|
174
174
|
timezone: props.timeZone
|
|
175
175
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instructure/quiz-core",
|
|
3
|
-
"version": "17.48.1-rc.
|
|
3
|
+
"version": "17.48.1-rc.4+a1a5f4bd4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The Quiz React SDK by Instructure Inc.",
|
|
6
6
|
"author": "Instructure, Inc. Engineering and Product Design",
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
],
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@instructure/outcomes-ui": "^2.1.2",
|
|
44
|
-
"@instructure/quiz-common": "17.48.1-rc.
|
|
45
|
-
"@instructure/quiz-i18n": "17.48.1-rc.
|
|
46
|
-
"@instructure/quiz-interactions": "17.48.1-rc.
|
|
47
|
-
"@instructure/quiz-number-input": "17.48.1-rc.
|
|
48
|
-
"@instructure/quiz-rce": "17.48.1-rc.
|
|
44
|
+
"@instructure/quiz-common": "17.48.1-rc.4+a1a5f4bd4",
|
|
45
|
+
"@instructure/quiz-i18n": "17.48.1-rc.4+a1a5f4bd4",
|
|
46
|
+
"@instructure/quiz-interactions": "17.48.1-rc.4+a1a5f4bd4",
|
|
47
|
+
"@instructure/quiz-number-input": "17.48.1-rc.4+a1a5f4bd4",
|
|
48
|
+
"@instructure/quiz-rce": "17.48.1-rc.4+a1a5f4bd4",
|
|
49
49
|
"@instructure/ui-a11y-content": "^7.20.0",
|
|
50
50
|
"@instructure/ui-alerts": "^7.20.0",
|
|
51
51
|
"@instructure/ui-avatar": "^7.20.0",
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"eventemitter3": "^3.1.0",
|
|
107
107
|
"humps": "^2.0.0",
|
|
108
108
|
"immutable": "^3.8.1",
|
|
109
|
-
"instructure-validations": "17.48.1-rc.
|
|
109
|
+
"instructure-validations": "17.48.1-rc.4+a1a5f4bd4",
|
|
110
110
|
"ipaddr.js": "^1.5.4",
|
|
111
111
|
"isomorphic-fetch": "^2.2.0",
|
|
112
112
|
"isuuid": "^0.1.0",
|
|
@@ -156,7 +156,7 @@
|
|
|
156
156
|
"intl": "^1.2.4",
|
|
157
157
|
"jquery": "^2.2.3",
|
|
158
158
|
"most-subject": "^5.3.0",
|
|
159
|
-
"quiz-presets": "17.48.1-rc.
|
|
159
|
+
"quiz-presets": "17.48.1-rc.4+a1a5f4bd4",
|
|
160
160
|
"react": "^16.8.6",
|
|
161
161
|
"react-addons-test-utils": "^15.6.2",
|
|
162
162
|
"react-dom": "^16.8.6",
|
|
@@ -172,5 +172,5 @@
|
|
|
172
172
|
"publishConfig": {
|
|
173
173
|
"access": "public"
|
|
174
174
|
},
|
|
175
|
-
"gitHead": "
|
|
175
|
+
"gitHead": "a1a5f4bd423c24d047e62909bc5c624172439856"
|
|
176
176
|
}
|
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
-
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
4
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
5
|
-
import React, { useEffect, useState } from 'react';
|
|
6
|
-
import PropTypes from 'prop-types';
|
|
7
|
-
import { connect } from "../../react-redux.js";
|
|
8
|
-
import store from "../../../reduxStore.js";
|
|
9
|
-
import { setRCEError } from "../../actions/rce.js";
|
|
10
|
-
import { isNewRCEEnabled, isNewRCEAppsEnabled, isNewRCERendererEnabled } from "../../util/rceChecker.js";
|
|
11
|
-
import { QuizzesSpinner as Spinner } from "../shared/spinner/Spinner.js";
|
|
12
|
-
import { Card } from "../shared/Card/index.js";
|
|
13
|
-
import { RceConfigContext, RceConfigKeys } from '@instructure/quiz-common';
|
|
14
|
-
import { addError } from "../../actions/alerts.js";
|
|
15
|
-
import t from '@instructure/quiz-i18n/es/format-message';
|
|
16
|
-
import { extractTextFromHtml } from '@instructure/quiz-interactions';
|
|
17
|
-
import { isQuizTaking, isQuizBuilding } from "../../util/windowChecks.js";
|
|
18
|
-
|
|
19
|
-
var _ref4 = /*#__PURE__*/React.createElement(Card, {
|
|
20
|
-
wrapped: true
|
|
21
|
-
}, /*#__PURE__*/React.createElement(Spinner, null));
|
|
22
|
-
|
|
23
|
-
export var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
|
|
24
|
-
var _useState = useState(props.rcsJwt),
|
|
25
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
26
|
-
jwt = _useState2[0],
|
|
27
|
-
setJwt = _useState2[1];
|
|
28
|
-
|
|
29
|
-
var _useState3 = useState(null),
|
|
30
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
31
|
-
canvasConfig = _useState4[0],
|
|
32
|
-
setCanvasConfig = _useState4[1];
|
|
33
|
-
|
|
34
|
-
var _useState5 = useState(true),
|
|
35
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
36
|
-
canvasConfigLoading = _useState6[0],
|
|
37
|
-
setCanvasConfigLoading = _useState6[1];
|
|
38
|
-
|
|
39
|
-
var hasAllPropsForRcs = function hasAllPropsForRcs() {
|
|
40
|
-
return !!(props.contextId && props.contextType && props.canvasUserId && props.rcsHost && props.rcsJwtRefreshFn && props.rcsJwt);
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
var isRce5Disabled = function isRce5Disabled() {
|
|
44
|
-
return !props.isNewRCEEnabled && !props.isNewRCERendererEnabled;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
var refreshToken = /*#__PURE__*/function () {
|
|
48
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(setTokenFn, questionStem) {
|
|
49
|
-
var _response$json;
|
|
50
|
-
|
|
51
|
-
var response, refreshedToken, normalizedStem, extractedText;
|
|
52
|
-
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
53
|
-
while (1) {
|
|
54
|
-
switch (_context.prev = _context.next) {
|
|
55
|
-
case 0:
|
|
56
|
-
if (hasAllPropsForRcs()) {
|
|
57
|
-
_context.next = 2;
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return _context.abrupt("return");
|
|
62
|
-
|
|
63
|
-
case 2:
|
|
64
|
-
_context.next = 4;
|
|
65
|
-
return props.rcsJwtRefreshFn(jwt);
|
|
66
|
-
|
|
67
|
-
case 4:
|
|
68
|
-
response = _context.sent;
|
|
69
|
-
refreshedToken = response === null || response === void 0 ? void 0 : (_response$json = response.json) === null || _response$json === void 0 ? void 0 : _response$json.token; // inst-redux-service-middleware response structure
|
|
70
|
-
|
|
71
|
-
if (refreshedToken) {
|
|
72
|
-
_context.next = 11;
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
normalizedStem = questionStem !== null && questionStem !== void 0 ? questionStem : 'Unknown stem';
|
|
77
|
-
extractedText = extractTextFromHtml(normalizedStem);
|
|
78
|
-
handleError(t('Error while answering "{stem}": Full functionality of the Rich Content Editor may not have been available to the user.', {
|
|
79
|
-
stem: extractedText
|
|
80
|
-
}));
|
|
81
|
-
return _context.abrupt("return");
|
|
82
|
-
|
|
83
|
-
case 11:
|
|
84
|
-
setJwt(refreshedToken);
|
|
85
|
-
setTokenFn(refreshedToken);
|
|
86
|
-
|
|
87
|
-
case 13:
|
|
88
|
-
case "end":
|
|
89
|
-
return _context.stop();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}, _callee);
|
|
93
|
-
}));
|
|
94
|
-
|
|
95
|
-
return function refreshToken(_x, _x2) {
|
|
96
|
-
return _ref.apply(this, arguments);
|
|
97
|
-
};
|
|
98
|
-
}();
|
|
99
|
-
|
|
100
|
-
var handleError = function handleError(quizLogMessage) {
|
|
101
|
-
if (shouldAlertUser()) {
|
|
102
|
-
alertTheUser(alertMessage());
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
if (shouldsetEventToQuizLog()) {
|
|
106
|
-
setEventToQuizLog(quizLogMessage);
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
var alertTheUser = function alertTheUser(message) {
|
|
111
|
-
store.dispatch(addError(message));
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
var setEventToQuizLog = function setEventToQuizLog(message) {
|
|
115
|
-
props.setEventToQuizLog(message);
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
var alertMessage = function alertMessage() {
|
|
119
|
-
return isQuizTaking() ? t('The Rich Content Editor has encountered an issue. ' + 'It has been logged for your instructor to review. Please refresh and try again.') : t('The Rich Content Editor has encountered an issue. Please refresh and try again.');
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
var shouldAlertUser = function shouldAlertUser() {
|
|
123
|
-
return isQuizTaking() || isQuizBuilding();
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
var shouldsetEventToQuizLog = function shouldsetEventToQuizLog() {
|
|
127
|
-
return isQuizTaking();
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
var getConfig = function getConfig() {
|
|
131
|
-
var _featureFlags, _ref2;
|
|
132
|
-
|
|
133
|
-
return {
|
|
134
|
-
featureFlags: (_featureFlags = {}, _defineProperty(_featureFlags, RceConfigKeys.isNewRCEEnabled, props.isNewRCEEnabled), _defineProperty(_featureFlags, RceConfigKeys.isNewRCERendererEnabled, props.isNewRCERendererEnabled), _defineProperty(_featureFlags, RceConfigKeys.isNewRCEAppsEnabled, props.isNewRCEAppsEnabled), _featureFlags),
|
|
135
|
-
rcs: hasAllPropsForRcs() && canvasConfig ? (_ref2 = {}, _defineProperty(_ref2, RceConfigKeys.canvasUserId, props.canvasUserId), _defineProperty(_ref2, RceConfigKeys.contextId, props.contextId), _defineProperty(_ref2, RceConfigKeys.contextType, props.contextType), _defineProperty(_ref2, RceConfigKeys.rcsHost, props.rcsHost), _defineProperty(_ref2, RceConfigKeys.rcsJwt, jwt), _defineProperty(_ref2, RceConfigKeys.rcsJwtRefreshFn, refreshToken), _defineProperty(_ref2, RceConfigKeys.canvasConfig, canvasConfig), _ref2) : null,
|
|
136
|
-
rendererEnhancement: _defineProperty({}, RceConfigKeys.canvasOrigin, props.canvasOrigin)
|
|
137
|
-
};
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
useEffect(function () {
|
|
141
|
-
_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
142
|
-
var host, base, url, response, json;
|
|
143
|
-
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
144
|
-
while (1) {
|
|
145
|
-
switch (_context2.prev = _context2.next) {
|
|
146
|
-
case 0:
|
|
147
|
-
if (!isRce5Disabled()) {
|
|
148
|
-
_context2.next = 2;
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
return _context2.abrupt("return");
|
|
153
|
-
|
|
154
|
-
case 2:
|
|
155
|
-
_context2.prev = 2;
|
|
156
|
-
|
|
157
|
-
if (hasAllPropsForRcs()) {
|
|
158
|
-
_context2.next = 6;
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
handleError(t('Error: Full functionality of the Rich Content Editor may not have been available to the user.'));
|
|
163
|
-
return _context2.abrupt("return");
|
|
164
|
-
|
|
165
|
-
case 6:
|
|
166
|
-
host = props.rcsHost;
|
|
167
|
-
base = host.match(/^https?:\/\//) ? host : "".concat(window.location.protocol, "//").concat(host);
|
|
168
|
-
url = new URL('/api/rceConfig', base);
|
|
169
|
-
url.searchParams.append('contextType', props.contextType);
|
|
170
|
-
url.searchParams.append('contextId', props.contextId);
|
|
171
|
-
_context2.next = 13;
|
|
172
|
-
return fetch(url.href, {
|
|
173
|
-
headers: {
|
|
174
|
-
'Authorization': "Bearer ".concat(props.rcsJwt)
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
case 13:
|
|
179
|
-
response = _context2.sent;
|
|
180
|
-
_context2.next = 16;
|
|
181
|
-
return response.json();
|
|
182
|
-
|
|
183
|
-
case 16:
|
|
184
|
-
json = _context2.sent;
|
|
185
|
-
setCanvasConfig(json);
|
|
186
|
-
setEventToQuizLog(null);
|
|
187
|
-
_context2.next = 25;
|
|
188
|
-
break;
|
|
189
|
-
|
|
190
|
-
case 21:
|
|
191
|
-
_context2.prev = 21;
|
|
192
|
-
_context2.t0 = _context2["catch"](2);
|
|
193
|
-
setCanvasConfig(null);
|
|
194
|
-
handleError(t('Error: Full functionality of the Rich Content Editor including accessibility features may not have been available to the user.'));
|
|
195
|
-
|
|
196
|
-
case 25:
|
|
197
|
-
_context2.prev = 25;
|
|
198
|
-
setCanvasConfigLoading(false);
|
|
199
|
-
return _context2.finish(25);
|
|
200
|
-
|
|
201
|
-
case 28:
|
|
202
|
-
case "end":
|
|
203
|
-
return _context2.stop();
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}, _callee2, null, [[2, 21, 25, 28]]);
|
|
207
|
-
}))();
|
|
208
|
-
}, [props.isNewRCEEnabled, props.isNewRCERendererEnabled]);
|
|
209
|
-
|
|
210
|
-
if (isRce5Disabled()) {
|
|
211
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, props.children);
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
if (!canvasConfigLoading) {
|
|
215
|
-
return /*#__PURE__*/React.createElement(RceConfigContext.Provider, {
|
|
216
|
-
value: getConfig()
|
|
217
|
-
}, props.children);
|
|
218
|
-
} else {
|
|
219
|
-
return _ref4;
|
|
220
|
-
}
|
|
221
|
-
};
|
|
222
|
-
RceConfigProviderComponent.propTypes = {
|
|
223
|
-
children: PropTypes.node.isRequired,
|
|
224
|
-
isNewRCEEnabled: PropTypes.bool.isRequired,
|
|
225
|
-
isNewRCERendererEnabled: PropTypes.bool.isRequired,
|
|
226
|
-
isNewRCEAppsEnabled: PropTypes.bool,
|
|
227
|
-
setEventToQuizLog: PropTypes.func.isRequired,
|
|
228
|
-
contextId: PropTypes.string,
|
|
229
|
-
contextType: PropTypes.string,
|
|
230
|
-
canvasUserId: PropTypes.string,
|
|
231
|
-
rcsHost: PropTypes.string,
|
|
232
|
-
rcsJwt: PropTypes.string,
|
|
233
|
-
rcsJwtRefreshFn: PropTypes.func,
|
|
234
|
-
canvasOrigin: PropTypes.string
|
|
235
|
-
};
|
|
236
|
-
RceConfigProviderComponent.defaultProps = {
|
|
237
|
-
contextId: null,
|
|
238
|
-
contextType: null,
|
|
239
|
-
canvasUserId: null,
|
|
240
|
-
rcsHost: null,
|
|
241
|
-
rcsJwt: null,
|
|
242
|
-
rcsJwtRefreshFn: null,
|
|
243
|
-
canvasOrigin: null,
|
|
244
|
-
isNewRCEEnabled: false,
|
|
245
|
-
isNewRCERendererEnabled: false,
|
|
246
|
-
isNewRCEAppsEnabled: false
|
|
247
|
-
};
|
|
248
|
-
|
|
249
|
-
var mapStateToProps = function mapStateToProps() {
|
|
250
|
-
return {
|
|
251
|
-
isNewRCEEnabled: isNewRCEEnabled(),
|
|
252
|
-
isNewRCERendererEnabled: isNewRCERendererEnabled(),
|
|
253
|
-
isNewRCEAppsEnabled: isNewRCEAppsEnabled()
|
|
254
|
-
};
|
|
255
|
-
};
|
|
256
|
-
|
|
257
|
-
var mapDispatchToProps = {
|
|
258
|
-
setEventToQuizLog: setRCEError
|
|
259
|
-
};
|
|
260
|
-
var RceConfigProvider = connect(mapStateToProps, mapDispatchToProps)(RceConfigProviderComponent);
|
|
261
|
-
export { RceConfigProvider };
|