@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.
@@ -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: prevState.newEntities.delete(newEntitiesIndex),
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
- tokenFetchFn: PropTypes.func.isRequired
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: prevState.newEntities.delete(newEntitiesIndex),
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
- tokenFetchFn: _propTypes.default.func.isRequired
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.1+7f6b13320",
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.1+7f6b13320",
45
- "@instructure/quiz-i18n": "17.34.1-rc.1+7f6b13320",
46
- "@instructure/quiz-interactions": "17.34.1-rc.1+7f6b13320",
47
- "@instructure/quiz-number-input": "17.34.1-rc.1+7f6b13320",
48
- "@instructure/quiz-rce": "17.34.1-rc.1+7f6b13320",
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.1+7f6b13320",
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.1+7f6b13320",
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.1+7f6b13320",
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": "7f6b13320fe7b875959e48d8f92c1792541dd9e2"
175
+ "gitHead": "b5a0c9dad42511dacf8a79929313c4060c81f2ef"
176
176
  }