@gamelearn/arcade-components 1.3.17 → 1.3.18

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.
@@ -98,30 +98,23 @@ var TestComponent = function TestComponent(_ref) {
98
98
  isFirst = _useState16[0],
99
99
  changeFirst = _useState16[1];
100
100
 
101
- var _useState17 = (0, _react.useState)({
102
- negatives: {},
103
- positives: {}
104
- }),
101
+ var _useState17 = (0, _react.useState)({}),
105
102
  _useState18 = _slicedToArray(_useState17, 2),
106
- resultHolder = _useState18[0],
107
- setResultHolder = _useState18[1];
103
+ showingResult = _useState18[0],
104
+ setShowingResult = _useState18[1];
108
105
 
109
106
  var _useState19 = (0, _react.useState)({}),
110
107
  _useState20 = _slicedToArray(_useState19, 2),
111
- showingResult = _useState20[0],
112
- setShowingResult = _useState20[1];
108
+ historicAnswers = _useState20[0],
109
+ setHistoric = _useState20[1];
113
110
 
114
- var _useState21 = (0, _react.useState)({}),
111
+ var _useState21 = (0, _react.useState)(false),
115
112
  _useState22 = _slicedToArray(_useState21, 2),
116
- historicAnswers = _useState22[0],
117
- setHistoric = _useState22[1];
118
-
119
- var _useState23 = (0, _react.useState)(false),
120
- _useState24 = _slicedToArray(_useState23, 2),
121
- timeOver = _useState24[0],
122
- setTimeOver = _useState24[1];
113
+ timeOver = _useState22[0],
114
+ setTimeOver = _useState22[1];
123
115
 
124
116
  var isRequired = required || test.required || false;
117
+ var rewardedCorrectAnswers = (0, _react.useRef)({});
125
118
 
126
119
  var _soundActions = _slicedToArray(soundActions, 2),
127
120
  playSound = _soundActions[0],
@@ -180,11 +173,6 @@ var TestComponent = function TestComponent(_ref) {
180
173
 
181
174
  var parsedShowingResult = _objectSpread({}, showingResult);
182
175
 
183
- Object.keys(resultHolder.positives).forEach(function (questionID) {
184
- if (parsedShowingResult[questionID] && parsedShowingResult[questionID].id === resultHolder.positives[questionID].id) {
185
- delete parsedShowingResult[questionID];
186
- }
187
- });
188
176
  setShowingResult(parsedShowingResult);
189
177
  stop('test_bg');
190
178
  };
@@ -195,9 +183,10 @@ var TestComponent = function TestComponent(_ref) {
195
183
  result: result,
196
184
  status: 'resolved'
197
185
  };
198
- Object.keys(actualResult.result).forEach(function (questionID) {
199
- if (resultHolder.negatives[questionID]) {
200
- actualResult.result[questionID].rewards = [].concat(_toConsumableArray(actualResult.result[questionID].rewards), _toConsumableArray(resultHolder.negatives[questionID].rewards));
186
+ var resultKeys = Object.keys(result);
187
+ resultKeys.forEach(function (k) {
188
+ if (rewardedCorrectAnswers.current[result[k].id]) {
189
+ result[k].rewards = [];
201
190
  }
202
191
  });
203
192
  emitEvent({
@@ -207,25 +196,36 @@ var TestComponent = function TestComponent(_ref) {
207
196
  };
208
197
 
209
198
  var restartTest = function restartTest() {
210
- var holder = _objectSpread({}, resultHolder);
211
-
212
- Object.keys(result).forEach(function (questionID) {
213
- var isCorrect = result[questionID].isCorrect ? 'positives' : 'negatives';
199
+ var finishAddPoints = function finishAddPoints() {
200
+ setShowingResult({});
201
+ setHistoric({});
202
+ changeView('test');
203
+ setResult({});
204
+ setTime(countdown.time);
205
+ setTimeOver(false);
206
+ stop('test_bg');
207
+ };
214
208
 
215
- if (holder[isCorrect][questionID]) {
216
- holder[isCorrect][questionID].rewards = [].concat(_toConsumableArray(holder[isCorrect][questionID].rewards), _toConsumableArray(result[questionID].rewards));
217
- } else {
218
- holder[isCorrect][questionID] = result[questionID];
209
+ var resultAnswers = Object.values(result);
210
+ resultAnswers.forEach(function (a) {
211
+ if (a.isCorrect) {
212
+ if (!rewardedCorrectAnswers.current[a.id]) {
213
+ rewardedCorrectAnswers.current[a.id] = true;
214
+ } else {
215
+ a.rewards = [];
216
+ }
219
217
  }
220
218
  });
221
- setShowingResult({});
222
- setHistoric({});
223
- setResultHolder(holder);
224
- changeView('test');
225
- setResult({});
226
- setTime(countdown.time);
227
- setTimeOver(false);
228
- stop('test_bg');
219
+ var rewards = resultAnswers.reduce(function (acc, current) {
220
+ return [].concat(_toConsumableArray(acc), _toConsumableArray(current.rewards));
221
+ }, []);
222
+ emitEvent({
223
+ type: 'addPoints',
224
+ payload: rewards,
225
+ complex: true,
226
+ finish: false,
227
+ onFinish: finishAddPoints
228
+ });
229
229
  };
230
230
 
231
231
  var translate = function translate(id, values) {
@@ -51,7 +51,6 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
51
51
 
52
52
  var WriterPuzzleComponent = function WriterPuzzleComponent(_ref) {
53
53
  var emitEvent = _ref.emitEvent,
54
- info = _ref.info,
55
54
  styles = _ref.styles,
56
55
  nodeId = _ref.nodeId,
57
56
  retry = _ref.retry,
@@ -137,6 +136,7 @@ var WriterPuzzleComponent = function WriterPuzzleComponent(_ref) {
137
136
  var _soundActions = _slicedToArray(soundActions, 1),
138
137
  playSound = _soundActions[0];
139
138
 
139
+ var rewardedCorrectAnswers = (0, _react.useRef)({});
140
140
  (0, _react.useEffect)(function () {
141
141
  if (finished) {
142
142
  setDisableExit(false);
@@ -243,52 +243,24 @@ var WriterPuzzleComponent = function WriterPuzzleComponent(_ref) {
243
243
  });
244
244
  };
245
245
 
246
- var endPoints = function endPoints() {
247
- var accumulatedRewards;
248
-
249
- if (info.solution && info.solution.right) {
250
- var rewards = info.solution.right.rewards;
251
-
252
- if (rewards && Array.isArray(rewards) && rewards.length) {
253
- accumulatedRewards = Array.from(rewards.concat(rewardsStack));
254
- } else {
255
- accumulatedRewards = Array.from(rewardsStack);
256
- }
257
- } else {
258
- accumulatedRewards = Array.from(rewardsStack);
259
- }
260
-
261
- var wrongRewards = info.solution.wrong.rewards;
262
- var rightRewards = info.solution.right.rewards;
246
+ var endGame = function endGame() {
263
247
  var AllDecisionsCorrect = checkAllDecisionsAreCorrect(); // if any is wrong count as wrong if there are no individual points assigned
264
248
 
265
- var pointsToEmit = [];
266
-
267
249
  if (failed) {
268
250
  playSound('fail');
269
- pointsToEmit = accumulatedRewards;
270
251
  } else {
271
252
  playSound(AllDecisionsCorrect ? 'score' : 'fail');
272
- pointsToEmit = AllDecisionsCorrect ? rightRewards : wrongRewards;
273
253
  }
274
254
 
275
255
  emitEvent({
276
256
  type: 'addPoints',
277
257
  complex: true,
278
258
  finish: true,
279
- payload: pointsToEmit
259
+ payload: rewardsStack,
260
+ onFinish: type !== 'view' ? handleLectures : null
280
261
  });
281
262
  };
282
263
 
283
- var endGame = function endGame() {
284
- if (type !== 'view') {
285
- handleLectures();
286
- endPoints();
287
- } else {
288
- endPoints();
289
- }
290
- };
291
-
292
264
  var handleFinish = function handleFinish() {
293
265
  if (!checkIfFeedbackNeeded()) {
294
266
  // THis case is for when we do not have any Decision
@@ -321,18 +293,24 @@ var WriterPuzzleComponent = function WriterPuzzleComponent(_ref) {
321
293
  };
322
294
 
323
295
  var retryPuzzle = function retryPuzzle() {
324
- setDecisionsList([]);
296
+ setFinished(false);
325
297
  setCurrentTextParagraph(0);
298
+ setDecisionsList([]);
299
+ setRewardsStack([]);
326
300
  setDoneTyping(false);
327
- setFinished(false);
328
301
  setShowFeedback(false);
329
302
  setReviewDone(false);
330
- setTextHolder({});
331
303
  setTextHolder(_defineProperty({}, "text_".concat(0), _objectSpread(_objectSpread({}, texts[0]), {}, {
332
304
  id: "text_".concat(0),
333
305
  correct: ''
334
306
  })));
335
307
  setIsActive(true);
308
+ emitEvent({
309
+ type: 'addPoints',
310
+ complex: true,
311
+ finish: false,
312
+ payload: rewardsStack
313
+ });
336
314
  };
337
315
 
338
316
  var noColor = function noColor() {
@@ -344,10 +322,17 @@ var WriterPuzzleComponent = function WriterPuzzleComponent(_ref) {
344
322
  };
345
323
 
346
324
  var handleSelectedOption = function handleSelectedOption(index) {
347
- var currentRewards = texts[currenTextParagraph].electionTexts[index].feedback.rewards;
325
+ var currentElection = texts[currenTextParagraph].electionTexts[index];
326
+ var currentRewards = currentElection.feedback.rewards;
348
327
 
349
328
  if (currentRewards && currentRewards[0] && currentRewards[0].points) {
350
- setRewardsStack([].concat(_toConsumableArray(rewardsStack), _toConsumableArray(currentRewards)));
329
+ if (!rewardedCorrectAnswers.current["t".concat(currenTextParagraph, "_e").concat(index)]) {
330
+ if (currentElection.correct) {
331
+ rewardedCorrectAnswers.current["t".concat(currenTextParagraph, "_e").concat(index)] = true;
332
+ }
333
+
334
+ setRewardsStack([].concat(_toConsumableArray(rewardsStack), _toConsumableArray(currentRewards)));
335
+ }
351
336
  }
352
337
 
353
338
  var checkColor = function checkColor() {
@@ -355,18 +340,18 @@ var WriterPuzzleComponent = function WriterPuzzleComponent(_ref) {
355
340
  return 'none';
356
341
  }
357
342
 
358
- return texts[currenTextParagraph].electionTexts[index].correct ? 'green' : 'red';
343
+ return currentElection.correct ? 'green' : 'red';
359
344
  };
360
345
 
361
346
  var decision = {
362
347
  currenTextParagraph: currenTextParagraph,
363
- fullText: texts[currenTextParagraph].electionTexts[index].fullText,
348
+ fullText: currentElection.fullText,
364
349
  index: index,
365
350
  isCorrect: checkColor()
366
351
  };
367
352
  setTextHolder(_objectSpread(_objectSpread({}, textHolder), {}, _defineProperty({}, "text_".concat(currenTextParagraph), {
368
353
  type: 'fixed',
369
- fullText: texts[currenTextParagraph].electionTexts[index].fullText,
354
+ fullText: currentElection.fullText,
370
355
  correct: decision.isCorrect
371
356
  })));
372
357
  setDecisionsList([].concat(_toConsumableArray(decisionsList), [decision]));
@@ -461,9 +446,7 @@ var WriterPuzzleComponent = function WriterPuzzleComponent(_ref) {
461
446
  retry: retry,
462
447
  skip: skip,
463
448
  checkCorrect: checkAllDecisionsAreCorrect,
464
- retryAction: function retryAction() {
465
- return retryPuzzle();
466
- },
449
+ retryAction: retryPuzzle,
467
450
  rewardsStack: rewardsStack,
468
451
  nodeId: nodeId,
469
452
  soundActions: soundActions
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gamelearn/arcade-components",
3
3
  "license": "Gamelearn",
4
- "version": "1.3.17",
4
+ "version": "1.3.18",
5
5
  "main": "dist/index.js",
6
6
  "files": [
7
7
  "dist",