@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.
@@ -0,0 +1,14 @@
1
+ import { isNewRCEEnabled, isNewRCEAppsEnabled, isNewRCERendererEnabled } from "../../util/rceChecker.js";
2
+ import { connect } from "../../react-redux.js";
3
+ import RceConfigProviderComponent from "./presenter.js";
4
+
5
+ var mapStateToProps = function mapStateToProps() {
6
+ return {
7
+ isNewRCEEnabled: isNewRCEEnabled(),
8
+ isNewRCERendererEnabled: isNewRCERendererEnabled(),
9
+ isNewRCEAppsEnabled: isNewRCEAppsEnabled()
10
+ };
11
+ };
12
+
13
+ var RceConfigProvider = connect(mapStateToProps)(RceConfigProviderComponent);
14
+ export default RceConfigProvider;
@@ -0,0 +1,201 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
4
+ import React, { useEffect, useState } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import { QuizzesSpinner as Spinner } from "../shared/spinner/Spinner.js";
7
+ import { Card } from "../shared/Card/index.js";
8
+ import { RceConfigContext } from '@instructure/quiz-common';
9
+ import { hasAllPropsForRcs, isRce5Disabled } from "./rceConfigUtils.js";
10
+ import { mapParamsToRceConfigContext } from "./rceConfigMapper.js";
11
+ import { quizLogMsgErrorDuringTaking, quizLogMsgFailedConfigFetch, quizLogMsgInvalidParams } from "./rceConfigErrorMessages.js";
12
+ import { handleError, setEventToQuizLog } from "./rceConfigErrorHandler.js";
13
+ import { fetchRceConfig } from "./rceConfigFetcher.js";
14
+
15
+ var decorateRcsJwtRefreshFn = function decorateRcsJwtRefreshFn(rcsJwtRefreshFn, jwt, setJwt) {
16
+ return /*#__PURE__*/function () {
17
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(setTokenFn, questionStem) {
18
+ var _response$json;
19
+
20
+ var response, refreshedToken;
21
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
22
+ while (1) {
23
+ switch (_context.prev = _context.next) {
24
+ case 0:
25
+ _context.next = 2;
26
+ return rcsJwtRefreshFn(jwt);
27
+
28
+ case 2:
29
+ response = _context.sent;
30
+ 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
31
+
32
+ if (refreshedToken) {
33
+ _context.next = 7;
34
+ break;
35
+ }
36
+
37
+ handleError(quizLogMsgErrorDuringTaking(questionStem));
38
+ return _context.abrupt("return");
39
+
40
+ case 7:
41
+ setJwt(refreshedToken);
42
+ setTokenFn(refreshedToken);
43
+
44
+ case 9:
45
+ case "end":
46
+ return _context.stop();
47
+ }
48
+ }
49
+ }, _callee);
50
+ }));
51
+
52
+ return function (_x, _x2) {
53
+ return _ref.apply(this, arguments);
54
+ };
55
+ }();
56
+ };
57
+
58
+ var _ref4 = /*#__PURE__*/React.createElement(Card, {
59
+ wrapped: true
60
+ }, /*#__PURE__*/React.createElement(Spinner, null));
61
+
62
+ var RceConfigProviderComponent = function RceConfigProviderComponent(_ref2) {
63
+ var children = _ref2.children,
64
+ isNewRCEEnabled = _ref2.isNewRCEEnabled,
65
+ isNewRCERendererEnabled = _ref2.isNewRCERendererEnabled,
66
+ isNewRCEAppsEnabled = _ref2.isNewRCEAppsEnabled,
67
+ contextId = _ref2.contextId,
68
+ contextType = _ref2.contextType,
69
+ canvasUserId = _ref2.canvasUserId,
70
+ rcsHost = _ref2.rcsHost,
71
+ rcsJwt = _ref2.rcsJwt,
72
+ rcsJwtRefreshFn = _ref2.rcsJwtRefreshFn,
73
+ canvasOrigin = _ref2.canvasOrigin;
74
+
75
+ var _useState = useState(rcsJwt),
76
+ _useState2 = _slicedToArray(_useState, 2),
77
+ jwt = _useState2[0],
78
+ setJwt = _useState2[1];
79
+
80
+ var _useState3 = useState(null),
81
+ _useState4 = _slicedToArray(_useState3, 2),
82
+ canvasConfig = _useState4[0],
83
+ setCanvasConfig = _useState4[1];
84
+
85
+ var _useState5 = useState(true),
86
+ _useState6 = _slicedToArray(_useState5, 2),
87
+ canvasConfigLoading = _useState6[0],
88
+ setCanvasConfigLoading = _useState6[1];
89
+
90
+ var refreshToken = rcsJwtRefreshFn && jwt ? decorateRcsJwtRefreshFn(rcsJwtRefreshFn, jwt, setJwt) : null;
91
+ var rcsParams = {
92
+ contextId: contextId,
93
+ contextType: contextType,
94
+ canvasUserId: canvasUserId,
95
+ rcsHost: rcsHost,
96
+ jwt: jwt,
97
+ refreshToken: refreshToken
98
+ };
99
+ var flags = {
100
+ isNewRCEEnabled: isNewRCEEnabled,
101
+ isNewRCERendererEnabled: isNewRCERendererEnabled,
102
+ isNewRCEAppsEnabled: isNewRCEAppsEnabled
103
+ };
104
+ var rendererParams = {
105
+ canvasOrigin: canvasOrigin
106
+ };
107
+ useEffect(function () {
108
+ _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
109
+ var json;
110
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
111
+ while (1) {
112
+ switch (_context2.prev = _context2.next) {
113
+ case 0:
114
+ if (!isRce5Disabled(flags)) {
115
+ _context2.next = 2;
116
+ break;
117
+ }
118
+
119
+ return _context2.abrupt("return");
120
+
121
+ case 2:
122
+ _context2.prev = 2;
123
+
124
+ if (hasAllPropsForRcs(rcsParams)) {
125
+ _context2.next = 6;
126
+ break;
127
+ }
128
+
129
+ handleError(quizLogMsgInvalidParams());
130
+ return _context2.abrupt("return");
131
+
132
+ case 6:
133
+ _context2.next = 8;
134
+ return fetchRceConfig(rcsHost, contextType, contextId, jwt);
135
+
136
+ case 8:
137
+ json = _context2.sent;
138
+ setCanvasConfig(json);
139
+ setEventToQuizLog(null);
140
+ _context2.next = 17;
141
+ break;
142
+
143
+ case 13:
144
+ _context2.prev = 13;
145
+ _context2.t0 = _context2["catch"](2);
146
+ setCanvasConfig(null);
147
+ handleError(quizLogMsgFailedConfigFetch());
148
+
149
+ case 17:
150
+ _context2.prev = 17;
151
+ setCanvasConfigLoading(false);
152
+ return _context2.finish(17);
153
+
154
+ case 20:
155
+ case "end":
156
+ return _context2.stop();
157
+ }
158
+ }
159
+ }, _callee2, null, [[2, 13, 17, 20]]);
160
+ }))();
161
+ }, [isNewRCEEnabled, isNewRCERendererEnabled]);
162
+
163
+ if (isRce5Disabled(flags)) {
164
+ return /*#__PURE__*/React.createElement(React.Fragment, null, children);
165
+ }
166
+
167
+ if (canvasConfigLoading) {
168
+ return _ref4;
169
+ }
170
+
171
+ return /*#__PURE__*/React.createElement(RceConfigContext.Provider, {
172
+ value: mapParamsToRceConfigContext(flags, rcsParams, rendererParams, canvasConfig)
173
+ }, children);
174
+ };
175
+
176
+ RceConfigProviderComponent.propTypes = {
177
+ children: PropTypes.node.isRequired,
178
+ isNewRCEEnabled: PropTypes.bool.isRequired,
179
+ isNewRCERendererEnabled: PropTypes.bool.isRequired,
180
+ isNewRCEAppsEnabled: PropTypes.bool,
181
+ contextId: PropTypes.string,
182
+ contextType: PropTypes.string,
183
+ canvasUserId: PropTypes.string,
184
+ rcsHost: PropTypes.string,
185
+ rcsJwt: PropTypes.string,
186
+ rcsJwtRefreshFn: PropTypes.func,
187
+ canvasOrigin: PropTypes.string
188
+ };
189
+ RceConfigProviderComponent.defaultProps = {
190
+ contextId: null,
191
+ contextType: null,
192
+ canvasUserId: null,
193
+ rcsHost: null,
194
+ rcsJwt: null,
195
+ rcsJwtRefreshFn: null,
196
+ canvasOrigin: null,
197
+ isNewRCEEnabled: false,
198
+ isNewRCERendererEnabled: false,
199
+ isNewRCEAppsEnabled: false
200
+ };
201
+ export default RceConfigProviderComponent;
@@ -0,0 +1,34 @@
1
+ import store from "../../../reduxStore.js";
2
+ import { addError } from "../../actions/alerts.js";
3
+ import { setRCEError } from "../../actions/rce.js";
4
+ import { isQuizBuilding, isQuizTaking } from "../../util/windowChecks.js";
5
+ import { userAlertMsgBuilding, userAlertMsgTaking } from "./rceConfigErrorMessages.js";
6
+
7
+ var alertTheUser = function alertTheUser(message) {
8
+ store.dispatch(addError(message));
9
+ };
10
+
11
+ var getAlertMessage = function getAlertMessage() {
12
+ return isQuizTaking() ? userAlertMsgTaking() : userAlertMsgBuilding();
13
+ };
14
+
15
+ var shouldAlertUser = function shouldAlertUser() {
16
+ return isQuizTaking() || isQuizBuilding();
17
+ };
18
+
19
+ var shouldSetEventToQuizLog = function shouldSetEventToQuizLog() {
20
+ return isQuizTaking();
21
+ };
22
+
23
+ export var handleError = function handleError(quizLogMessage) {
24
+ if (shouldAlertUser()) {
25
+ alertTheUser(getAlertMessage());
26
+ }
27
+
28
+ if (shouldSetEventToQuizLog()) {
29
+ setEventToQuizLog(quizLogMessage);
30
+ }
31
+ };
32
+ export var setEventToQuizLog = function setEventToQuizLog(message) {
33
+ store.dispatch(setRCEError(message));
34
+ };
@@ -0,0 +1,21 @@
1
+ import t from '@instructure/quiz-i18n/es/format-message';
2
+ import { extractTextFromHtml } from '@instructure/quiz-interactions';
3
+ export var quizLogMsgErrorDuringTaking = function quizLogMsgErrorDuringTaking(stem) {
4
+ var normalizedStem = stem !== null && stem !== void 0 ? stem : 'Unknown stem';
5
+ var extractedText = extractTextFromHtml(normalizedStem);
6
+ return t('Error while answering "{stem}": Full functionality of the Rich Content Editor may not have been available to the user.', {
7
+ stem: extractedText
8
+ });
9
+ };
10
+ export var quizLogMsgInvalidParams = function quizLogMsgInvalidParams() {
11
+ return t('Error: Full functionality of the Rich Content Editor may not have been available to the user.');
12
+ };
13
+ export var quizLogMsgFailedConfigFetch = function quizLogMsgFailedConfigFetch() {
14
+ return t('Error: Full functionality of the Rich Content Editor including accessibility features may not have been available to the user.');
15
+ };
16
+ export var userAlertMsgTaking = function userAlertMsgTaking() {
17
+ return t('The Rich Content Editor has encountered an issue. It has been logged for your instructor to review. Please refresh and try again.');
18
+ };
19
+ export var userAlertMsgBuilding = function userAlertMsgBuilding() {
20
+ return t('The Rich Content Editor has encountered an issue. Please refresh and try again.');
21
+ };
@@ -0,0 +1,55 @@
1
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
+
4
+ var buildRceConfigUrl = function buildRceConfigUrl(host, contextType, contextId) {
5
+ var base = host.match(/^https?:\/\//) ? host : "".concat(window.location.protocol, "//").concat(host);
6
+ var url = new URL('/api/rceConfig', base);
7
+ contextType && url.searchParams.append('contextType', contextType);
8
+ contextId && url.searchParams.append('contextId', contextId);
9
+ return url;
10
+ };
11
+
12
+ export var fetchRceConfig = /*#__PURE__*/function () {
13
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(rcsHost, contextType, contextId, jwt) {
14
+ var rceConfigUrl, response;
15
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
16
+ while (1) {
17
+ switch (_context.prev = _context.next) {
18
+ case 0:
19
+ rceConfigUrl = buildRceConfigUrl(rcsHost, contextType, contextId);
20
+ _context.next = 3;
21
+ return fetch(rceConfigUrl.href, {
22
+ headers: {
23
+ 'Authorization': "Bearer ".concat(jwt)
24
+ }
25
+ });
26
+
27
+ case 3:
28
+ response = _context.sent;
29
+
30
+ if (response.ok) {
31
+ _context.next = 6;
32
+ break;
33
+ }
34
+
35
+ throw "Failed to fetch, response status: ".concat(response.status);
36
+
37
+ case 6:
38
+ _context.next = 8;
39
+ return response.json();
40
+
41
+ case 8:
42
+ return _context.abrupt("return", _context.sent);
43
+
44
+ case 9:
45
+ case "end":
46
+ return _context.stop();
47
+ }
48
+ }
49
+ }, _callee);
50
+ }));
51
+
52
+ return function fetchRceConfig(_x, _x2, _x3, _x4) {
53
+ return _ref.apply(this, arguments);
54
+ };
55
+ }();
@@ -0,0 +1,31 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import { RceConfigKeys } from '@instructure/quiz-common';
3
+ import { hasAllPropsForRcs } from "./rceConfigUtils.js";
4
+
5
+ var mapFeatureFlags = function mapFeatureFlags(flags) {
6
+ var _ref;
7
+
8
+ return _ref = {}, _defineProperty(_ref, RceConfigKeys.isNewRCEEnabled, (flags === null || flags === void 0 ? void 0 : flags.isNewRCEEnabled) || false), _defineProperty(_ref, RceConfigKeys.isNewRCERendererEnabled, (flags === null || flags === void 0 ? void 0 : flags.isNewRCERendererEnabled) || false), _defineProperty(_ref, RceConfigKeys.isNewRCEAppsEnabled, (flags === null || flags === void 0 ? void 0 : flags.isNewRCEAppsEnabled) || false), _ref;
9
+ };
10
+
11
+ var mapRcs = function mapRcs(rcsParams, canvasConfig) {
12
+ if (rcsParams && hasAllPropsForRcs(rcsParams) && canvasConfig) {
13
+ var _ref2;
14
+
15
+ return _ref2 = {}, _defineProperty(_ref2, RceConfigKeys.canvasUserId, rcsParams.canvasUserId), _defineProperty(_ref2, RceConfigKeys.contextId, rcsParams.contextId), _defineProperty(_ref2, RceConfigKeys.contextType, rcsParams.contextType), _defineProperty(_ref2, RceConfigKeys.rcsHost, rcsParams.rcsHost), _defineProperty(_ref2, RceConfigKeys.rcsJwt, rcsParams.jwt), _defineProperty(_ref2, RceConfigKeys.rcsJwtRefreshFn, rcsParams.refreshToken), _defineProperty(_ref2, RceConfigKeys.canvasConfig, canvasConfig), _ref2;
16
+ } else {
17
+ return null;
18
+ }
19
+ };
20
+
21
+ var rendererEnhancement = function rendererEnhancement(rendererParams) {
22
+ return _defineProperty({}, RceConfigKeys.canvasOrigin, (rendererParams === null || rendererParams === void 0 ? void 0 : rendererParams.canvasOrigin) || null);
23
+ };
24
+
25
+ export var mapParamsToRceConfigContext = function mapParamsToRceConfigContext(flags, rcsParams, rendererParams, canvasConfig) {
26
+ return {
27
+ featureFlags: mapFeatureFlags(flags),
28
+ rcs: mapRcs(rcsParams, canvasConfig),
29
+ rendererEnhancement: rendererEnhancement(rendererParams)
30
+ };
31
+ };
@@ -0,0 +1,6 @@
1
+ export var hasAllPropsForRcs = function hasAllPropsForRcs(rcsParams) {
2
+ 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));
3
+ };
4
+ export var isRce5Disabled = function isRce5Disabled(flags) {
5
+ return !(flags === null || flags === void 0 ? void 0 : flags.isNewRCEEnabled) && !(flags === null || flags === void 0 ? void 0 : flags.isNewRCERendererEnabled);
6
+ };
@@ -33,7 +33,7 @@ import theme from "./theme.js";
33
33
  import CustomPropTypes from "../../../common/util/CustomPropTypes.js";
34
34
  import ConfirmationModal from "../ConfirmationModal/index.js";
35
35
  import setupFormatMessage from '@instructure/quiz-i18n/es/util/setupFormatMessage';
36
- import { RceConfigProvider } from "../RceConfigProvider/RceConfigProvider.js";
36
+ import RceConfigProvider from "../RceConfigProvider/index.js";
37
37
  import { ApiFeatureFlagInitializer } from "../ApiFeatureFlagInitializer/index.js";
38
38
 
39
39
  var _ref = /*#__PURE__*/React.createElement(ConfirmationModal, null);
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _rceChecker = require("../../util/rceChecker.js");
11
+
12
+ var _reactRedux = require("../../react-redux.js");
13
+
14
+ var _presenter = _interopRequireDefault(require("./presenter.js"));
15
+
16
+ var mapStateToProps = function mapStateToProps() {
17
+ return {
18
+ isNewRCEEnabled: (0, _rceChecker.isNewRCEEnabled)(),
19
+ isNewRCERendererEnabled: (0, _rceChecker.isNewRCERendererEnabled)(),
20
+ isNewRCEAppsEnabled: (0, _rceChecker.isNewRCEAppsEnabled)()
21
+ };
22
+ };
23
+
24
+ var RceConfigProvider = (0, _reactRedux.connect)(mapStateToProps)(_presenter.default);
25
+ var _default = RceConfigProvider;
26
+ exports.default = _default;
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
15
+
16
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _propTypes = _interopRequireDefault(require("prop-types"));
21
+
22
+ var _Spinner = require("../shared/spinner/Spinner.js");
23
+
24
+ var _index = require("../shared/Card/index.js");
25
+
26
+ var _quizCommon = require("@instructure/quiz-common");
27
+
28
+ var _rceConfigUtils = require("./rceConfigUtils.js");
29
+
30
+ var _rceConfigMapper = require("./rceConfigMapper.js");
31
+
32
+ var _rceConfigErrorMessages = require("./rceConfigErrorMessages.js");
33
+
34
+ var _rceConfigErrorHandler = require("./rceConfigErrorHandler.js");
35
+
36
+ var _rceConfigFetcher = require("./rceConfigFetcher.js");
37
+
38
+ var decorateRcsJwtRefreshFn = function decorateRcsJwtRefreshFn(rcsJwtRefreshFn, jwt, setJwt) {
39
+ return /*#__PURE__*/function () {
40
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(setTokenFn, questionStem) {
41
+ var _response$json;
42
+
43
+ var response, refreshedToken;
44
+ return _regenerator.default.wrap(function _callee$(_context) {
45
+ while (1) {
46
+ switch (_context.prev = _context.next) {
47
+ case 0:
48
+ _context.next = 2;
49
+ return rcsJwtRefreshFn(jwt);
50
+
51
+ case 2:
52
+ response = _context.sent;
53
+ 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
54
+
55
+ if (refreshedToken) {
56
+ _context.next = 7;
57
+ break;
58
+ }
59
+
60
+ (0, _rceConfigErrorHandler.handleError)((0, _rceConfigErrorMessages.quizLogMsgErrorDuringTaking)(questionStem));
61
+ return _context.abrupt("return");
62
+
63
+ case 7:
64
+ setJwt(refreshedToken);
65
+ setTokenFn(refreshedToken);
66
+
67
+ case 9:
68
+ case "end":
69
+ return _context.stop();
70
+ }
71
+ }
72
+ }, _callee);
73
+ }));
74
+
75
+ return function (_x, _x2) {
76
+ return _ref.apply(this, arguments);
77
+ };
78
+ }();
79
+ };
80
+
81
+ var _ref4 = /*#__PURE__*/_react.default.createElement(_index.Card, {
82
+ wrapped: true
83
+ }, /*#__PURE__*/_react.default.createElement(_Spinner.QuizzesSpinner, null));
84
+
85
+ var RceConfigProviderComponent = function RceConfigProviderComponent(_ref2) {
86
+ var children = _ref2.children,
87
+ isNewRCEEnabled = _ref2.isNewRCEEnabled,
88
+ isNewRCERendererEnabled = _ref2.isNewRCERendererEnabled,
89
+ isNewRCEAppsEnabled = _ref2.isNewRCEAppsEnabled,
90
+ contextId = _ref2.contextId,
91
+ contextType = _ref2.contextType,
92
+ canvasUserId = _ref2.canvasUserId,
93
+ rcsHost = _ref2.rcsHost,
94
+ rcsJwt = _ref2.rcsJwt,
95
+ rcsJwtRefreshFn = _ref2.rcsJwtRefreshFn,
96
+ canvasOrigin = _ref2.canvasOrigin;
97
+
98
+ var _useState = (0, _react.useState)(rcsJwt),
99
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
100
+ jwt = _useState2[0],
101
+ setJwt = _useState2[1];
102
+
103
+ var _useState3 = (0, _react.useState)(null),
104
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
105
+ canvasConfig = _useState4[0],
106
+ setCanvasConfig = _useState4[1];
107
+
108
+ var _useState5 = (0, _react.useState)(true),
109
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
110
+ canvasConfigLoading = _useState6[0],
111
+ setCanvasConfigLoading = _useState6[1];
112
+
113
+ var refreshToken = rcsJwtRefreshFn && jwt ? decorateRcsJwtRefreshFn(rcsJwtRefreshFn, jwt, setJwt) : null;
114
+ var rcsParams = {
115
+ contextId: contextId,
116
+ contextType: contextType,
117
+ canvasUserId: canvasUserId,
118
+ rcsHost: rcsHost,
119
+ jwt: jwt,
120
+ refreshToken: refreshToken
121
+ };
122
+ var flags = {
123
+ isNewRCEEnabled: isNewRCEEnabled,
124
+ isNewRCERendererEnabled: isNewRCERendererEnabled,
125
+ isNewRCEAppsEnabled: isNewRCEAppsEnabled
126
+ };
127
+ var rendererParams = {
128
+ canvasOrigin: canvasOrigin
129
+ };
130
+ (0, _react.useEffect)(function () {
131
+ (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
132
+ var json;
133
+ return _regenerator.default.wrap(function _callee2$(_context2) {
134
+ while (1) {
135
+ switch (_context2.prev = _context2.next) {
136
+ case 0:
137
+ if (!(0, _rceConfigUtils.isRce5Disabled)(flags)) {
138
+ _context2.next = 2;
139
+ break;
140
+ }
141
+
142
+ return _context2.abrupt("return");
143
+
144
+ case 2:
145
+ _context2.prev = 2;
146
+
147
+ if ((0, _rceConfigUtils.hasAllPropsForRcs)(rcsParams)) {
148
+ _context2.next = 6;
149
+ break;
150
+ }
151
+
152
+ (0, _rceConfigErrorHandler.handleError)((0, _rceConfigErrorMessages.quizLogMsgInvalidParams)());
153
+ return _context2.abrupt("return");
154
+
155
+ case 6:
156
+ _context2.next = 8;
157
+ return (0, _rceConfigFetcher.fetchRceConfig)(rcsHost, contextType, contextId, jwt);
158
+
159
+ case 8:
160
+ json = _context2.sent;
161
+ setCanvasConfig(json);
162
+ (0, _rceConfigErrorHandler.setEventToQuizLog)(null);
163
+ _context2.next = 17;
164
+ break;
165
+
166
+ case 13:
167
+ _context2.prev = 13;
168
+ _context2.t0 = _context2["catch"](2);
169
+ setCanvasConfig(null);
170
+ (0, _rceConfigErrorHandler.handleError)((0, _rceConfigErrorMessages.quizLogMsgFailedConfigFetch)());
171
+
172
+ case 17:
173
+ _context2.prev = 17;
174
+ setCanvasConfigLoading(false);
175
+ return _context2.finish(17);
176
+
177
+ case 20:
178
+ case "end":
179
+ return _context2.stop();
180
+ }
181
+ }
182
+ }, _callee2, null, [[2, 13, 17, 20]]);
183
+ }))();
184
+ }, [isNewRCEEnabled, isNewRCERendererEnabled]);
185
+
186
+ if ((0, _rceConfigUtils.isRce5Disabled)(flags)) {
187
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children);
188
+ }
189
+
190
+ if (canvasConfigLoading) {
191
+ return _ref4;
192
+ }
193
+
194
+ return /*#__PURE__*/_react.default.createElement(_quizCommon.RceConfigContext.Provider, {
195
+ value: (0, _rceConfigMapper.mapParamsToRceConfigContext)(flags, rcsParams, rendererParams, canvasConfig)
196
+ }, children);
197
+ };
198
+
199
+ RceConfigProviderComponent.propTypes = {
200
+ children: _propTypes.default.node.isRequired,
201
+ isNewRCEEnabled: _propTypes.default.bool.isRequired,
202
+ isNewRCERendererEnabled: _propTypes.default.bool.isRequired,
203
+ isNewRCEAppsEnabled: _propTypes.default.bool,
204
+ contextId: _propTypes.default.string,
205
+ contextType: _propTypes.default.string,
206
+ canvasUserId: _propTypes.default.string,
207
+ rcsHost: _propTypes.default.string,
208
+ rcsJwt: _propTypes.default.string,
209
+ rcsJwtRefreshFn: _propTypes.default.func,
210
+ canvasOrigin: _propTypes.default.string
211
+ };
212
+ RceConfigProviderComponent.defaultProps = {
213
+ contextId: null,
214
+ contextType: null,
215
+ canvasUserId: null,
216
+ rcsHost: null,
217
+ rcsJwt: null,
218
+ rcsJwtRefreshFn: null,
219
+ canvasOrigin: null,
220
+ isNewRCEEnabled: false,
221
+ isNewRCERendererEnabled: false,
222
+ isNewRCEAppsEnabled: false
223
+ };
224
+ var _default = RceConfigProviderComponent;
225
+ exports.default = _default;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.setEventToQuizLog = exports.handleError = void 0;
9
+
10
+ var _reduxStore = _interopRequireDefault(require("../../../reduxStore.js"));
11
+
12
+ var _alerts = require("../../actions/alerts.js");
13
+
14
+ var _rce = require("../../actions/rce.js");
15
+
16
+ var _windowChecks = require("../../util/windowChecks.js");
17
+
18
+ var _rceConfigErrorMessages = require("./rceConfigErrorMessages.js");
19
+
20
+ var alertTheUser = function alertTheUser(message) {
21
+ _reduxStore.default.dispatch((0, _alerts.addError)(message));
22
+ };
23
+
24
+ var getAlertMessage = function getAlertMessage() {
25
+ return (0, _windowChecks.isQuizTaking)() ? (0, _rceConfigErrorMessages.userAlertMsgTaking)() : (0, _rceConfigErrorMessages.userAlertMsgBuilding)();
26
+ };
27
+
28
+ var shouldAlertUser = function shouldAlertUser() {
29
+ return (0, _windowChecks.isQuizTaking)() || (0, _windowChecks.isQuizBuilding)();
30
+ };
31
+
32
+ var shouldSetEventToQuizLog = function shouldSetEventToQuizLog() {
33
+ return (0, _windowChecks.isQuizTaking)();
34
+ };
35
+
36
+ var handleError = function handleError(quizLogMessage) {
37
+ if (shouldAlertUser()) {
38
+ alertTheUser(getAlertMessage());
39
+ }
40
+
41
+ if (shouldSetEventToQuizLog()) {
42
+ setEventToQuizLog(quizLogMessage);
43
+ }
44
+ };
45
+
46
+ exports.handleError = handleError;
47
+
48
+ var setEventToQuizLog = function setEventToQuizLog(message) {
49
+ _reduxStore.default.dispatch((0, _rce.setRCEError)(message));
50
+ };
51
+
52
+ exports.setEventToQuizLog = setEventToQuizLog;