@instructure/quiz-core 20.29.1 → 20.29.2-snapshot.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.
@@ -1,3 +1,4 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
1
2
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
3
  import _createClass from "@babel/runtime/helpers/esm/createClass";
3
4
  import { AwsClient } from 'aws4fetch';
@@ -98,9 +99,16 @@ var StreamQueue = /*#__PURE__*/function () {
98
99
  key: "_sendRecordsViaProxy",
99
100
  value: function _sendRecordsViaProxy(params) {
100
101
  if (!this.proxyDomain) return;
102
+ var encodedParams = _objectSpread(_objectSpread({}, params), {}, {
103
+ Records: params.Records.map(function (record) {
104
+ return _objectSpread(_objectSpread({}, record), {}, {
105
+ Data: btoa(record.Data)
106
+ });
107
+ })
108
+ });
101
109
  this.awsClient.fetch(this.proxyDomain, {
102
110
  method: 'PUT',
103
- body: JSON.stringify(params)
111
+ body: JSON.stringify(encodedParams)
104
112
  });
105
113
  }
106
114
  }, {
package/es/index.js CHANGED
@@ -77,7 +77,8 @@ export { TimeUnitsInput } from "./common/components/shared/TimeUnitsInput/index.
77
77
  export { QuizEntry as QuizEntryView } from "./building/components/resources/quizEntry/QuizEntry/index.js";
78
78
  export { Provider } from "./common/react-redux.js";
79
79
  export { FormattedTimer } from "./common/components/shared/FormattedDuration/index.js";
80
- export { default as TagWrapper } from "./common/components/shared/TagWrapper/index.js"; // Utilities
80
+ export { default as TagWrapper } from "./common/components/shared/TagWrapper/index.js";
81
+ export { RetryGradePassbackButton } from "./moderating/components/resources/RetryGradePassbackButton/index.js"; // Utilities
81
82
  export { environment as config } from "./config.js";
82
83
  export { Fetcher } from "./common/util/Fetcher.js";
83
84
  export { httpHeaders } from "./common/util/httpHeaders.js";
@@ -0,0 +1,18 @@
1
+ import PropTypes from 'prop-types';
2
+ import { addAlert } from "../../../../common/actions/alerts.js";
3
+ import { connect } from "../../../../common/react-redux.js";
4
+ import { RetryGradePassbackButton as RetryGradePassbackButtonPresenter } from "./presenter.js";
5
+ var mapStateToProps = function mapStateToProps(state) {
6
+ return {};
7
+ };
8
+ var mapDispatchToProps = {
9
+ addAlert: addAlert
10
+ };
11
+ var ConnectedRetryGradePassbackButton = connect(mapStateToProps, mapDispatchToProps)(RetryGradePassbackButtonPresenter);
12
+
13
+ // Note: We don't want to expose props that are only used internally by the container component
14
+ export var RetryGradePassbackButton = ConnectedRetryGradePassbackButton;
15
+ RetryGradePassbackButton.propTypes = {
16
+ onClick: PropTypes.func.isRequired,
17
+ 'data-automation': PropTypes.string
18
+ };
@@ -0,0 +1,82 @@
1
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
+ import React from 'react';
5
+ import { Button } from '@instructure/ui-buttons';
6
+ import { IconRefreshLine } from '@instructure/ui-icons';
7
+ import t from '@instructure/quiz-i18n/es/format-message';
8
+ import PropTypes from 'prop-types';
9
+ export function RetryGradePassbackButton(_ref) {
10
+ var addAlert = _ref.addAlert,
11
+ onClick = _ref.onClick,
12
+ dataAutomation = _ref['data-automation'];
13
+ var _React$useState = React.useState('idle'),
14
+ _React$useState2 = _slicedToArray(_React$useState, 2),
15
+ retryGradePassbackStatus = _React$useState2[0],
16
+ setRetryGradePassbackStatus = _React$useState2[1];
17
+ function handleClick() {
18
+ return _handleClick.apply(this, arguments);
19
+ }
20
+ function _handleClick() {
21
+ _handleClick = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
22
+ var response;
23
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
24
+ while (1) {
25
+ switch (_context.prev = _context.next) {
26
+ case 0:
27
+ if (!(retryGradePassbackStatus === 'pending')) {
28
+ _context.next = 2;
29
+ break;
30
+ }
31
+ return _context.abrupt("return");
32
+ case 2:
33
+ _context.prev = 2;
34
+ setRetryGradePassbackStatus('pending');
35
+ _context.next = 6;
36
+ return onClick();
37
+ case 6:
38
+ response = _context.sent;
39
+ if (!(response == null)) {
40
+ _context.next = 9;
41
+ break;
42
+ }
43
+ throw new Error('Failed to retry grade passback');
44
+ case 9:
45
+ addAlert({
46
+ message: t('Grade passback has been retried. This may take a while.'),
47
+ variant: 'info',
48
+ removeIn: 5000
49
+ });
50
+ setRetryGradePassbackStatus('success');
51
+ _context.next = 17;
52
+ break;
53
+ case 13:
54
+ _context.prev = 13;
55
+ _context.t0 = _context["catch"](2);
56
+ addAlert({
57
+ message: t('Failed to retry grade passback. Please try again.'),
58
+ variant: 'error',
59
+ removeIn: 5000
60
+ });
61
+ setRetryGradePassbackStatus('error');
62
+ case 17:
63
+ case "end":
64
+ return _context.stop();
65
+ }
66
+ }
67
+ }, _callee, null, [[2, 13]]);
68
+ }));
69
+ return _handleClick.apply(this, arguments);
70
+ }
71
+ return /*#__PURE__*/React.createElement(Button, {
72
+ renderIcon: IconRefreshLine,
73
+ onClick: handleClick,
74
+ disabled: retryGradePassbackStatus === 'pending',
75
+ "data-automation": dataAutomation
76
+ }, t('Retry Grade Passback'));
77
+ }
78
+ RetryGradePassbackButton.propTypes = {
79
+ onClick: PropTypes.func.isRequired,
80
+ addAlert: PropTypes.func.isRequired,
81
+ 'data-automation': PropTypes.string
82
+ };
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
8
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
11
  var _aws4fetch = require("aws4fetch");
@@ -105,9 +106,16 @@ var StreamQueue = /*#__PURE__*/function () {
105
106
  key: "_sendRecordsViaProxy",
106
107
  value: function _sendRecordsViaProxy(params) {
107
108
  if (!this.proxyDomain) return;
109
+ var encodedParams = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
110
+ Records: params.Records.map(function (record) {
111
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, record), {}, {
112
+ Data: btoa(record.Data)
113
+ });
114
+ })
115
+ });
108
116
  this.awsClient.fetch(this.proxyDomain, {
109
117
  method: 'PUT',
110
- body: JSON.stringify(params)
118
+ body: JSON.stringify(encodedParams)
111
119
  });
112
120
  }
113
121
  }, {
package/lib/index.js CHANGED
@@ -80,6 +80,7 @@ var _exportNames = {
80
80
  breakdownSeconds: true,
81
81
  HOUR_IN_SECONDS: true,
82
82
  TagWrapper: true,
83
+ RetryGradePassbackButton: true,
83
84
  config: true,
84
85
  Fetcher: true,
85
86
  httpHeaders: true,
@@ -653,6 +654,12 @@ Object.defineProperty(exports, "TagWrapper", {
653
654
  return _index56.default;
654
655
  }
655
656
  });
657
+ Object.defineProperty(exports, "RetryGradePassbackButton", {
658
+ enumerable: true,
659
+ get: function get() {
660
+ return _index57.RetryGradePassbackButton;
661
+ }
662
+ });
656
663
  Object.defineProperty(exports, "config", {
657
664
  enumerable: true,
658
665
  get: function get() {
@@ -764,7 +771,7 @@ Object.defineProperty(exports, "formatTime", {
764
771
  Object.defineProperty(exports, "generateImportModalId", {
765
772
  enumerable: true,
766
773
  get: function get() {
767
- return _index57.generateImportModalId;
774
+ return _index58.generateImportModalId;
768
775
  }
769
776
  });
770
777
  Object.defineProperty(exports, "TimerService", {
@@ -1475,6 +1482,7 @@ var _index54 = require("./building/components/resources/quizEntry/QuizEntry/inde
1475
1482
  var _reactRedux = require("./common/react-redux.js");
1476
1483
  var _index55 = require("./common/components/shared/FormattedDuration/index.js");
1477
1484
  var _index56 = _interopRequireDefault(require("./common/components/shared/TagWrapper/index.js"));
1485
+ var _index57 = require("./moderating/components/resources/RetryGradePassbackButton/index.js");
1478
1486
  var _config = require("./config.js");
1479
1487
  var _Fetcher = require("./common/util/Fetcher.js");
1480
1488
  var _httpHeaders = require("./common/util/httpHeaders.js");
@@ -1487,7 +1495,7 @@ var _interactionTypePropsHelper = require("./common/util/interactionTypePropsHel
1487
1495
  var _generateDisplayPositions = require("./common/util/generateDisplayPositions.js");
1488
1496
  var _makeScrollable = require("./common/components/shared/functionality/makeScrollable.js");
1489
1497
  var _formatTimespan = require("./common/util/formatTimespan.js");
1490
- var _index57 = require("./common/components/ImportModal/index.js");
1498
+ var _index58 = require("./common/components/ImportModal/index.js");
1491
1499
  var _TimerService = require("./common/util/TimerService.js");
1492
1500
  var _TimeRecordingService = require("./common/util/TimeRecordingService.js");
1493
1501
  var _windowChecks = require("./common/util/windowChecks.js");
@@ -1533,15 +1541,15 @@ var _rce2 = require("./common/selectors/rce.js");
1533
1541
  var _quizSessions4 = require("./common/selectors/quizSessions.js");
1534
1542
  var _sessionItems = require("./common/selectors/sessionItems.js");
1535
1543
  var _sessionItemResults = require("./common/selectors/sessionItemResults.js");
1536
- var _index58 = require("./common/records/index.js");
1537
- Object.keys(_index58).forEach(function (key) {
1544
+ var _index59 = require("./common/records/index.js");
1545
+ Object.keys(_index59).forEach(function (key) {
1538
1546
  if (key === "default" || key === "__esModule") return;
1539
1547
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
1540
- if (key in exports && exports[key] === _index58[key]) return;
1548
+ if (key in exports && exports[key] === _index59[key]) return;
1541
1549
  Object.defineProperty(exports, key, {
1542
1550
  enumerable: true,
1543
1551
  get: function get() {
1544
- return _index58[key];
1552
+ return _index59[key];
1545
1553
  }
1546
1554
  });
1547
1555
  });
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.RetryGradePassbackButton = void 0;
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _alerts = require("../../../../common/actions/alerts.js");
10
+ var _reactRedux = require("../../../../common/react-redux.js");
11
+ var _presenter = require("./presenter.js");
12
+ var mapStateToProps = function mapStateToProps(state) {
13
+ return {};
14
+ };
15
+ var mapDispatchToProps = {
16
+ addAlert: _alerts.addAlert
17
+ };
18
+ var ConnectedRetryGradePassbackButton = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_presenter.RetryGradePassbackButton);
19
+
20
+ // Note: We don't want to expose props that are only used internally by the container component
21
+ var RetryGradePassbackButton = ConnectedRetryGradePassbackButton;
22
+ exports.RetryGradePassbackButton = RetryGradePassbackButton;
23
+ RetryGradePassbackButton.propTypes = {
24
+ onClick: _propTypes.default.func.isRequired,
25
+ 'data-automation': _propTypes.default.string
26
+ };
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.RetryGradePassbackButton = RetryGradePassbackButton;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _react = _interopRequireDefault(require("react"));
12
+ var _uiButtons = require("@instructure/ui-buttons");
13
+ var _uiIcons = require("@instructure/ui-icons");
14
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
15
+ var _propTypes = _interopRequireDefault(require("prop-types"));
16
+ function RetryGradePassbackButton(_ref) {
17
+ var addAlert = _ref.addAlert,
18
+ onClick = _ref.onClick,
19
+ dataAutomation = _ref['data-automation'];
20
+ var _React$useState = _react.default.useState('idle'),
21
+ _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
22
+ retryGradePassbackStatus = _React$useState2[0],
23
+ setRetryGradePassbackStatus = _React$useState2[1];
24
+ function handleClick() {
25
+ return _handleClick.apply(this, arguments);
26
+ }
27
+ function _handleClick() {
28
+ _handleClick = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
29
+ var response;
30
+ return _regenerator.default.wrap(function _callee$(_context) {
31
+ while (1) {
32
+ switch (_context.prev = _context.next) {
33
+ case 0:
34
+ if (!(retryGradePassbackStatus === 'pending')) {
35
+ _context.next = 2;
36
+ break;
37
+ }
38
+ return _context.abrupt("return");
39
+ case 2:
40
+ _context.prev = 2;
41
+ setRetryGradePassbackStatus('pending');
42
+ _context.next = 6;
43
+ return onClick();
44
+ case 6:
45
+ response = _context.sent;
46
+ if (!(response == null)) {
47
+ _context.next = 9;
48
+ break;
49
+ }
50
+ throw new Error('Failed to retry grade passback');
51
+ case 9:
52
+ addAlert({
53
+ message: (0, _formatMessage.default)('Grade passback has been retried. This may take a while.'),
54
+ variant: 'info',
55
+ removeIn: 5000
56
+ });
57
+ setRetryGradePassbackStatus('success');
58
+ _context.next = 17;
59
+ break;
60
+ case 13:
61
+ _context.prev = 13;
62
+ _context.t0 = _context["catch"](2);
63
+ addAlert({
64
+ message: (0, _formatMessage.default)('Failed to retry grade passback. Please try again.'),
65
+ variant: 'error',
66
+ removeIn: 5000
67
+ });
68
+ setRetryGradePassbackStatus('error');
69
+ case 17:
70
+ case "end":
71
+ return _context.stop();
72
+ }
73
+ }
74
+ }, _callee, null, [[2, 13]]);
75
+ }));
76
+ return _handleClick.apply(this, arguments);
77
+ }
78
+ return /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
79
+ renderIcon: _uiIcons.IconRefreshLine,
80
+ onClick: handleClick,
81
+ disabled: retryGradePassbackStatus === 'pending',
82
+ "data-automation": dataAutomation
83
+ }, (0, _formatMessage.default)('Retry Grade Passback'));
84
+ }
85
+ RetryGradePassbackButton.propTypes = {
86
+ onClick: _propTypes.default.func.isRequired,
87
+ addAlert: _propTypes.default.func.isRequired,
88
+ 'data-automation': _propTypes.default.string
89
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "20.29.1",
3
+ "version": "20.29.2-snapshot.1+4109522cb",
4
4
  "license": "MIT",
5
5
  "description": "The Quiz React SDK by Instructure Inc.",
6
6
  "author": "Instructure, Inc. Engineering and Product Design",
@@ -44,11 +44,11 @@
44
44
  "@instructure/emotion": "^8.51.0",
45
45
  "@instructure/grading-utils": "^1.0.0",
46
46
  "@instructure/outcomes-ui": "^3.2.2",
47
- "@instructure/quiz-common": "^20.29.1",
48
- "@instructure/quiz-i18n": "^20.29.1",
49
- "@instructure/quiz-interactions": "^20.29.1",
50
- "@instructure/quiz-number-input": "^20.29.1",
51
- "@instructure/quiz-rce": "^20.29.1",
47
+ "@instructure/quiz-common": "20.29.2-snapshot.1+4109522cb",
48
+ "@instructure/quiz-i18n": "20.29.2-snapshot.1+4109522cb",
49
+ "@instructure/quiz-interactions": "20.29.2-snapshot.1+4109522cb",
50
+ "@instructure/quiz-number-input": "20.29.2-snapshot.1+4109522cb",
51
+ "@instructure/quiz-rce": "20.29.2-snapshot.1+4109522cb",
52
52
  "@instructure/ui-a11y-content": "^8.51.0",
53
53
  "@instructure/ui-alerts": "^8.51.0",
54
54
  "@instructure/ui-avatar": "^8.51.0",
@@ -112,7 +112,7 @@
112
112
  "file-saver": "~2.0.5",
113
113
  "humps": "^2.0.0",
114
114
  "immutable": "^3.8.1",
115
- "instructure-validations": "^20.29.1",
115
+ "instructure-validations": "20.29.2-snapshot.1+4109522cb",
116
116
  "ipaddr.js": "^1.5.4",
117
117
  "isomorphic-fetch": "^2.2.0",
118
118
  "isuuid": "^0.1.0",
@@ -143,7 +143,7 @@
143
143
  "uuid": "^3.2.1"
144
144
  },
145
145
  "devDependencies": {
146
- "@instructure/quiz-scripts": "^20.29.1",
146
+ "@instructure/quiz-scripts": "20.29.1",
147
147
  "@instructure/ui-axe-check": "^8.51.0",
148
148
  "@instructure/ui-babel-preset": "^7.22.1",
149
149
  "@instructure/ui-test-utils": "^7.22.1",
@@ -161,7 +161,7 @@
161
161
  "jquery": "^2.2.3",
162
162
  "karma-junit-reporter": "^2.0.1",
163
163
  "most-subject": "^5.3.0",
164
- "quiz-presets": "^20.29.1",
164
+ "quiz-presets": "20.29.2-snapshot.1+4109522cb",
165
165
  "react": "^16.8.6",
166
166
  "react-addons-test-utils": "^15.6.2",
167
167
  "react-dom": "^16.8.6",
@@ -176,5 +176,6 @@
176
176
  },
177
177
  "publishConfig": {
178
178
  "access": "public"
179
- }
179
+ },
180
+ "gitHead": "4109522cbe52fdda5394e0ed45fceeba34def8ea"
180
181
  }