@instructure/quiz-core 17.34.1-rc.1 → 17.34.1-rc.13
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/banks/components/SharingModal/presenter.js +2 -1
- package/es/common/components/SDKApp/index.js +4 -3
- package/es/common/util/RceConfigProvider.js +87 -0
- package/lib/banks/components/SharingModal/presenter.js +2 -1
- package/lib/common/components/SDKApp/index.js +5 -3
- package/lib/common/util/RceConfigProvider.js +104 -0
- package/package.json +10 -10
|
@@ -222,9 +222,10 @@ export var SharingModalPresenter = (_dec = themeable(theme, styles), _dec(_class
|
|
|
222
222
|
});
|
|
223
223
|
var removedNewEntity = newEntitiesIndex > -1;
|
|
224
224
|
var newShares = removedNewEntity ? prevState.shares.delete(sharesIndex) : prevState.shares.setIn([sharesIndex, 'permission'], permission);
|
|
225
|
+
var newEntities = removedNewEntity ? prevState.newEntities.delete(newEntitiesIndex) : prevState.newEntities;
|
|
225
226
|
return {
|
|
226
227
|
shares: newShares,
|
|
227
|
-
newEntities:
|
|
228
|
+
newEntities: newEntities,
|
|
228
229
|
entitiesWithChangedPermission: Object.assign({}, prevState.entitiesWithChangedPermission, _defineProperty({}, id, permission))
|
|
229
230
|
};
|
|
230
231
|
}, _this.updateEntitiesCount);
|
|
@@ -34,6 +34,7 @@ import theme from "./theme.js";
|
|
|
34
34
|
import CustomPropTypes from "../../../common/util/CustomPropTypes.js";
|
|
35
35
|
import ConfirmationModal from "../ConfirmationModal/index.js";
|
|
36
36
|
import setupFormatMessage from '@instructure/quiz-i18n/es/util/setupFormatMessage';
|
|
37
|
+
import { RceConfigProvider } from "../../util/RceConfigProvider.js";
|
|
37
38
|
|
|
38
39
|
var _ref = /*#__PURE__*/React.createElement(ConfirmationModal, null);
|
|
39
40
|
|
|
@@ -131,13 +132,13 @@ export var SDKApp = (_dec = themeable(theme, styles), _dec(_class = (_temp = _cl
|
|
|
131
132
|
context = this.context;
|
|
132
133
|
return /*#__PURE__*/React.createElement(Provider, {
|
|
133
134
|
store: store
|
|
134
|
-
}, /*#__PURE__*/React.createElement(ApplyLocale, {
|
|
135
|
+
}, /*#__PURE__*/React.createElement(RceConfigProvider, this.props.rceConfig, /*#__PURE__*/React.createElement(ApplyLocale, {
|
|
135
136
|
locale: getLocale(props, context),
|
|
136
137
|
timezone: props.timeZone
|
|
137
138
|
}, /*#__PURE__*/React.createElement("div", {
|
|
138
139
|
className: styles.sdk,
|
|
139
140
|
"data-automation": "sdk-app"
|
|
140
|
-
}, _ref, props.children)));
|
|
141
|
+
}, _ref, props.children))));
|
|
141
142
|
}
|
|
142
143
|
}]);
|
|
143
144
|
|
|
@@ -160,7 +161,7 @@ export var SDKApp = (_dec = themeable(theme, styles), _dec(_class = (_temp = _cl
|
|
|
160
161
|
contextType: PropTypes.string.isRequired,
|
|
161
162
|
canvasUserId: PropTypes.string.isRequired,
|
|
162
163
|
rcsHost: PropTypes.string.isRequired,
|
|
163
|
-
|
|
164
|
+
rcsJwtRefreshFn: PropTypes.func.isRequired
|
|
164
165
|
}),
|
|
165
166
|
timeZone: PropTypes.string,
|
|
166
167
|
translations: PropTypes.objectOf(PropTypes.shape({
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
+
import React, { useState, useEffect } from 'react';
|
|
4
|
+
import PropTypes from 'prop-types';
|
|
5
|
+
import { connect } from "../../common/react-redux.js";
|
|
6
|
+
import isNewRCEEnabled from "./rceChecker.js";
|
|
7
|
+
import { RceConfigContext, RceConfigKeys, TokenFetchStatus } from '@instructure/quiz-common';
|
|
8
|
+
|
|
9
|
+
var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
|
|
10
|
+
var _useState = useState(null),
|
|
11
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
12
|
+
jwt = _useState2[0],
|
|
13
|
+
setJwt = _useState2[1];
|
|
14
|
+
|
|
15
|
+
var _useState3 = useState(TokenFetchStatus.initial),
|
|
16
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
17
|
+
status = _useState4[0],
|
|
18
|
+
setStatus = _useState4[1];
|
|
19
|
+
|
|
20
|
+
var hasAllPropsForNewRce = function hasAllPropsForNewRce() {
|
|
21
|
+
return props.useNewRce && !!(props.contextId && props.contextType && props.canvasUserId && props.rcsHost && props.rcsJwtRefreshFn);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
var getToken = function getToken() {
|
|
25
|
+
if (!hasAllPropsForNewRce()) return;
|
|
26
|
+
setStatus(TokenFetchStatus.pending);
|
|
27
|
+
return new Promise(function (resolve, reject) {
|
|
28
|
+
props.rcsJwtRefreshFn().then(function (response) {
|
|
29
|
+
var token = response.token;
|
|
30
|
+
setStatus(TokenFetchStatus.success);
|
|
31
|
+
setJwt(token);
|
|
32
|
+
resolve(response);
|
|
33
|
+
}, function () {
|
|
34
|
+
setStatus(TokenFetchStatus.failed);
|
|
35
|
+
reject();
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
var refreshToken = function refreshToken(setTokenFn) {
|
|
41
|
+
return getToken().then(function (response) {
|
|
42
|
+
var token = response.token;
|
|
43
|
+
setTokenFn(token);
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
var getConfig = function getConfig() {
|
|
48
|
+
var _config;
|
|
49
|
+
|
|
50
|
+
var config = (_config = {}, _defineProperty(_config, RceConfigKeys.useNewRce, props.useNewRce), _defineProperty(_config, RceConfigKeys.canvasUserId, props.canvasUserId), _defineProperty(_config, RceConfigKeys.contextId, props.contextId), _defineProperty(_config, RceConfigKeys.contextType, props.contextType), _defineProperty(_config, RceConfigKeys.rcsHost, props.rcsHost), _defineProperty(_config, RceConfigKeys.rcsJwt, jwt), _defineProperty(_config, RceConfigKeys.rcsJwtRefreshFn, refreshToken), _defineProperty(_config, RceConfigKeys.rcsJwtFetchStatus, status), _config);
|
|
51
|
+
return config;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
useEffect(function () {
|
|
55
|
+
getToken();
|
|
56
|
+
}, [props.useNewRce]);
|
|
57
|
+
if (!hasAllPropsForNewRce()) return /*#__PURE__*/React.createElement(React.Fragment, null, props.children);
|
|
58
|
+
return /*#__PURE__*/React.createElement(RceConfigContext.Provider, {
|
|
59
|
+
value: getConfig()
|
|
60
|
+
}, props.children);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
RceConfigProviderComponent.propTypes = {
|
|
64
|
+
children: PropTypes.node.isRequired,
|
|
65
|
+
useNewRce: PropTypes.bool.isRequired,
|
|
66
|
+
contextId: PropTypes.string,
|
|
67
|
+
contextType: PropTypes.string,
|
|
68
|
+
canvasUserId: PropTypes.string,
|
|
69
|
+
rcsHost: PropTypes.string,
|
|
70
|
+
rcsJwtRefreshFn: PropTypes.func
|
|
71
|
+
};
|
|
72
|
+
RceConfigProviderComponent.defaultProps = {
|
|
73
|
+
contextId: null,
|
|
74
|
+
contextType: null,
|
|
75
|
+
canvasUserId: null,
|
|
76
|
+
rcsHost: null,
|
|
77
|
+
rcsJwtRefreshFn: null
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
var mapStateToProps = function mapStateToProps() {
|
|
81
|
+
return {
|
|
82
|
+
useNewRce: isNewRCEEnabled()
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
var RceConfigProvider = connect(mapStateToProps)(RceConfigProviderComponent);
|
|
87
|
+
export { RceConfigProvider };
|
|
@@ -260,9 +260,10 @@ var SharingModalPresenter = (_dec = (0, _uiThemeable.themeable)(_theme.default,
|
|
|
260
260
|
});
|
|
261
261
|
var removedNewEntity = newEntitiesIndex > -1;
|
|
262
262
|
var newShares = removedNewEntity ? prevState.shares.delete(sharesIndex) : prevState.shares.setIn([sharesIndex, 'permission'], permission);
|
|
263
|
+
var newEntities = removedNewEntity ? prevState.newEntities.delete(newEntitiesIndex) : prevState.newEntities;
|
|
263
264
|
return {
|
|
264
265
|
shares: newShares,
|
|
265
|
-
newEntities:
|
|
266
|
+
newEntities: newEntities,
|
|
266
267
|
entitiesWithChangedPermission: Object.assign({}, prevState.entitiesWithChangedPermission, (0, _defineProperty2.default)({}, id, permission))
|
|
267
268
|
};
|
|
268
269
|
}, _this.updateEntitiesCount);
|
|
@@ -55,6 +55,8 @@ var _index = _interopRequireDefault(require("../ConfirmationModal/index.js"));
|
|
|
55
55
|
|
|
56
56
|
var _setupFormatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/util/setupFormatMessage"));
|
|
57
57
|
|
|
58
|
+
var _RceConfigProvider = require("../../util/RceConfigProvider.js");
|
|
59
|
+
|
|
58
60
|
var _dec, _class, _class2, _temp;
|
|
59
61
|
|
|
60
62
|
var styles = {
|
|
@@ -160,13 +162,13 @@ var SDKApp = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_
|
|
|
160
162
|
context = this.context;
|
|
161
163
|
return /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
|
|
162
164
|
store: store
|
|
163
|
-
}, /*#__PURE__*/_react.default.createElement(_uiI18n.ApplyLocale, {
|
|
165
|
+
}, /*#__PURE__*/_react.default.createElement(_RceConfigProvider.RceConfigProvider, this.props.rceConfig, /*#__PURE__*/_react.default.createElement(_uiI18n.ApplyLocale, {
|
|
164
166
|
locale: (0, _quizCommon.getLocale)(props, context),
|
|
165
167
|
timezone: props.timeZone
|
|
166
168
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
167
169
|
className: styles.sdk,
|
|
168
170
|
"data-automation": "sdk-app"
|
|
169
|
-
}, _ref, props.children)));
|
|
171
|
+
}, _ref, props.children))));
|
|
170
172
|
}
|
|
171
173
|
}]);
|
|
172
174
|
SDKApp.displayName = "SDKApp";
|
|
@@ -188,7 +190,7 @@ var SDKApp = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_
|
|
|
188
190
|
contextType: _propTypes.default.string.isRequired,
|
|
189
191
|
canvasUserId: _propTypes.default.string.isRequired,
|
|
190
192
|
rcsHost: _propTypes.default.string.isRequired,
|
|
191
|
-
|
|
193
|
+
rcsJwtRefreshFn: _propTypes.default.func.isRequired
|
|
192
194
|
}),
|
|
193
195
|
timeZone: _propTypes.default.string,
|
|
194
196
|
translations: _propTypes.default.objectOf(_propTypes.default.shape({
|
|
@@ -0,0 +1,104 @@
|
|
|
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.RceConfigProvider = void 0;
|
|
11
|
+
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
+
|
|
18
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
19
|
+
|
|
20
|
+
var _reactRedux = require("../../common/react-redux.js");
|
|
21
|
+
|
|
22
|
+
var _rceChecker = _interopRequireDefault(require("./rceChecker.js"));
|
|
23
|
+
|
|
24
|
+
var _quizCommon = require("@instructure/quiz-common");
|
|
25
|
+
|
|
26
|
+
var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
|
|
27
|
+
var _useState = (0, _react.useState)(null),
|
|
28
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
29
|
+
jwt = _useState2[0],
|
|
30
|
+
setJwt = _useState2[1];
|
|
31
|
+
|
|
32
|
+
var _useState3 = (0, _react.useState)(_quizCommon.TokenFetchStatus.initial),
|
|
33
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
34
|
+
status = _useState4[0],
|
|
35
|
+
setStatus = _useState4[1];
|
|
36
|
+
|
|
37
|
+
var hasAllPropsForNewRce = function hasAllPropsForNewRce() {
|
|
38
|
+
return props.useNewRce && !!(props.contextId && props.contextType && props.canvasUserId && props.rcsHost && props.rcsJwtRefreshFn);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
var getToken = function getToken() {
|
|
42
|
+
if (!hasAllPropsForNewRce()) return;
|
|
43
|
+
setStatus(_quizCommon.TokenFetchStatus.pending);
|
|
44
|
+
return new Promise(function (resolve, reject) {
|
|
45
|
+
props.rcsJwtRefreshFn().then(function (response) {
|
|
46
|
+
var token = response.token;
|
|
47
|
+
setStatus(_quizCommon.TokenFetchStatus.success);
|
|
48
|
+
setJwt(token);
|
|
49
|
+
resolve(response);
|
|
50
|
+
}, function () {
|
|
51
|
+
setStatus(_quizCommon.TokenFetchStatus.failed);
|
|
52
|
+
reject();
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
var refreshToken = function refreshToken(setTokenFn) {
|
|
58
|
+
return getToken().then(function (response) {
|
|
59
|
+
var token = response.token;
|
|
60
|
+
setTokenFn(token);
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
var getConfig = function getConfig() {
|
|
65
|
+
var _config;
|
|
66
|
+
|
|
67
|
+
var config = (_config = {}, (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.useNewRce, props.useNewRce), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.canvasUserId, props.canvasUserId), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.contextId, props.contextId), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.contextType, props.contextType), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.rcsHost, props.rcsHost), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.rcsJwt, jwt), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.rcsJwtRefreshFn, refreshToken), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.rcsJwtFetchStatus, status), _config);
|
|
68
|
+
return config;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
(0, _react.useEffect)(function () {
|
|
72
|
+
getToken();
|
|
73
|
+
}, [props.useNewRce]);
|
|
74
|
+
if (!hasAllPropsForNewRce()) return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.children);
|
|
75
|
+
return /*#__PURE__*/_react.default.createElement(_quizCommon.RceConfigContext.Provider, {
|
|
76
|
+
value: getConfig()
|
|
77
|
+
}, props.children);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
RceConfigProviderComponent.propTypes = {
|
|
81
|
+
children: _propTypes.default.node.isRequired,
|
|
82
|
+
useNewRce: _propTypes.default.bool.isRequired,
|
|
83
|
+
contextId: _propTypes.default.string,
|
|
84
|
+
contextType: _propTypes.default.string,
|
|
85
|
+
canvasUserId: _propTypes.default.string,
|
|
86
|
+
rcsHost: _propTypes.default.string,
|
|
87
|
+
rcsJwtRefreshFn: _propTypes.default.func
|
|
88
|
+
};
|
|
89
|
+
RceConfigProviderComponent.defaultProps = {
|
|
90
|
+
contextId: null,
|
|
91
|
+
contextType: null,
|
|
92
|
+
canvasUserId: null,
|
|
93
|
+
rcsHost: null,
|
|
94
|
+
rcsJwtRefreshFn: null
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
var mapStateToProps = function mapStateToProps() {
|
|
98
|
+
return {
|
|
99
|
+
useNewRce: (0, _rceChecker.default)()
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
var RceConfigProvider = (0, _reactRedux.connect)(mapStateToProps)(RceConfigProviderComponent);
|
|
104
|
+
exports.RceConfigProvider = RceConfigProvider;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instructure/quiz-core",
|
|
3
|
-
"version": "17.34.1-rc.
|
|
3
|
+
"version": "17.34.1-rc.13+b5a0c9dad",
|
|
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.34.1-rc.
|
|
45
|
-
"@instructure/quiz-i18n": "17.34.1-rc.
|
|
46
|
-
"@instructure/quiz-interactions": "17.34.1-rc.
|
|
47
|
-
"@instructure/quiz-number-input": "17.34.1-rc.
|
|
48
|
-
"@instructure/quiz-rce": "17.34.1-rc.
|
|
44
|
+
"@instructure/quiz-common": "17.34.1-rc.13+b5a0c9dad",
|
|
45
|
+
"@instructure/quiz-i18n": "17.34.1-rc.13+b5a0c9dad",
|
|
46
|
+
"@instructure/quiz-interactions": "17.34.1-rc.13+b5a0c9dad",
|
|
47
|
+
"@instructure/quiz-number-input": "17.34.1-rc.13+b5a0c9dad",
|
|
48
|
+
"@instructure/quiz-rce": "17.34.1-rc.13+b5a0c9dad",
|
|
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.34.1-rc.
|
|
109
|
+
"instructure-validations": "17.34.1-rc.13+b5a0c9dad",
|
|
110
110
|
"ipaddr.js": "^1.5.4",
|
|
111
111
|
"isomorphic-fetch": "^2.2.0",
|
|
112
112
|
"isuuid": "^0.1.0",
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"uuid": "^3.2.1"
|
|
138
138
|
},
|
|
139
139
|
"devDependencies": {
|
|
140
|
-
"@instructure/quiz-scripts": "17.34.1-rc.
|
|
140
|
+
"@instructure/quiz-scripts": "17.34.1-rc.13+b5a0c9dad",
|
|
141
141
|
"@instructure/ui-axe-check": "^7.20.0",
|
|
142
142
|
"@instructure/ui-babel-preset": "^7.20.0",
|
|
143
143
|
"@instructure/ui-karma-config": "^7.20.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.34.1-rc.
|
|
159
|
+
"quiz-presets": "17.34.1-rc.13+b5a0c9dad",
|
|
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": "b5a0c9dad42511dacf8a79929313c4060c81f2ef"
|
|
176
176
|
}
|