diff --git a/app/ecolyo.b6b47f77b5fabac557b6.js b/app/ecolyo.acd231610169e9bfaa06.js
similarity index 99%
rename from app/ecolyo.b6b47f77b5fabac557b6.js
rename to app/ecolyo.acd231610169e9bfaa06.js
index e5ccb7ce0c30f1aa8e891041ba893885d6ceb439..373094843a6cffe28b1af79e5f210e74b8a91608 100644
--- a/app/ecolyo.b6b47f77b5fabac557b6.js
+++ b/app/ecolyo.acd231610169e9bfaa06.js
@@ -12253,7 +12253,7 @@ var ChallengeService = /*#__PURE__*/function () {
     key: "updateUserChallenge",
     value: function () {
       var _updateUserChallenge = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(userChallenge, flag, quizWithUpdatedQuestions, fluidStatus, action) {
-        var updatedUserChallenge, updatedDuel, updatedQuiz, updatedExploration, updatedAction, duelService, quizService, explorationService, actionService, updateQuizProgress, userAction, _yield$this$_client$s, userChallengeEntity, result, errorMessage;
+        var updatedUserChallenge, updatedDuel, updatedQuiz, updatedExploration, updatedAction, duelService, quizService, explorationService, actionService, updateQuizProgress, _yield$this$_client$s, userChallengeEntity, result, errorMessage;
         return _regenerator.default.wrap(function _callee8$(_context9) {
           while (1) {
             switch (_context9.prev = _context9.next) {
@@ -12267,18 +12267,18 @@ var ChallengeService = /*#__PURE__*/function () {
                 explorationService = new _exploration.default(this._client);
                 actionService = new _action.default(this._client);
                 _context9.t0 = flag;
-                _context9.next = _context9.t0 === _enums.UserChallengeUpdateFlag.CHALLENGE ? 11 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_CONSUMPTION ? 11 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_UNLOCK ? 13 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_UPDATE_THRESHOLD ? 16 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_START ? 21 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_WIN ? 24 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_LOSS ? 27 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_RESET ? 30 : _context9.t0 === _enums.UserChallengeUpdateFlag.QUIZ_START ? 33 : _context9.t0 === _enums.UserChallengeUpdateFlag.QUIZ_DONE ? 36 : _context9.t0 === _enums.UserChallengeUpdateFlag.QUIZ_UPDATE ? 40 : _context9.t0 === _enums.UserChallengeUpdateFlag.QUIZ_RESET ? 42 : _context9.t0 === _enums.UserChallengeUpdateFlag.EXPLORATION_START ? 45 : _context9.t0 === _enums.UserChallengeUpdateFlag.EXPLORATION_UPDATE ? 48 : _context9.t0 === _enums.UserChallengeUpdateFlag.EXPLORATION_NOTIFICATION ? 51 : _context9.t0 === _enums.UserChallengeUpdateFlag.EXPLORATION_DONE ? 54 : _context9.t0 === _enums.UserChallengeUpdateFlag.ACTION_START ? 57 : _context9.t0 === _enums.UserChallengeUpdateFlag.ACTION_NOTIFICATION ? 61 : _context9.t0 === _enums.UserChallengeUpdateFlag.ACTION_DONE ? 64 : 67;
+                _context9.next = _context9.t0 === _enums.UserChallengeUpdateFlag.CHALLENGE ? 11 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_CONSUMPTION ? 11 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_UNLOCK ? 13 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_UPDATE_THRESHOLD ? 16 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_START ? 21 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_WIN ? 24 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_LOSS ? 27 : _context9.t0 === _enums.UserChallengeUpdateFlag.DUEL_RESET ? 30 : _context9.t0 === _enums.UserChallengeUpdateFlag.QUIZ_START ? 33 : _context9.t0 === _enums.UserChallengeUpdateFlag.QUIZ_DONE ? 36 : _context9.t0 === _enums.UserChallengeUpdateFlag.QUIZ_UPDATE ? 40 : _context9.t0 === _enums.UserChallengeUpdateFlag.QUIZ_RESET ? 42 : _context9.t0 === _enums.UserChallengeUpdateFlag.EXPLORATION_START ? 45 : _context9.t0 === _enums.UserChallengeUpdateFlag.EXPLORATION_UPDATE ? 48 : _context9.t0 === _enums.UserChallengeUpdateFlag.EXPLORATION_NOTIFICATION ? 51 : _context9.t0 === _enums.UserChallengeUpdateFlag.EXPLORATION_DONE ? 54 : _context9.t0 === _enums.UserChallengeUpdateFlag.ACTION_START ? 57 : _context9.t0 === _enums.UserChallengeUpdateFlag.ACTION_NOTIFICATION ? 59 : _context9.t0 === _enums.UserChallengeUpdateFlag.ACTION_DONE ? 62 : 65;
                 break;
               case 11:
                 updatedUserChallenge = userChallenge;
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 13:
                 updatedDuel = duelService.unlockUserDuel(userChallenge.duel);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
                   state: _enums.UserChallengeState.DUEL,
                   duel: updatedDuel
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 16:
                 _context9.next = 18;
                 return duelService.updateUserDuelThreshold(userChallenge.duel, fluidStatus);
@@ -12288,14 +12288,14 @@ var ChallengeService = /*#__PURE__*/function () {
                   state: _enums.UserChallengeState.DUEL,
                   duel: updatedDuel
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 21:
                 updatedDuel = duelService.startUserDuel(userChallenge.duel);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
                   state: _enums.UserChallengeState.DUEL,
                   duel: updatedDuel
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 24:
                 updatedDuel = duelService.endUserDuel(userChallenge.duel);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
@@ -12306,7 +12306,7 @@ var ChallengeService = /*#__PURE__*/function () {
                   }).startOf('day'),
                   success: _enums.UserChallengeSuccess.WIN
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 27:
                 updatedDuel = duelService.endUserDuel(userChallenge.duel);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
@@ -12317,7 +12317,7 @@ var ChallengeService = /*#__PURE__*/function () {
                   }).startOf('day'),
                   success: _enums.UserChallengeSuccess.LOST
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 30:
                 updatedDuel = duelService.resetUserDuel(userChallenge.duel);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
@@ -12325,13 +12325,13 @@ var ChallengeService = /*#__PURE__*/function () {
                   duel: updatedDuel,
                   success: _enums.UserChallengeSuccess.ONGOING
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 33:
                 updatedQuiz = quizService.startUserQuiz(userChallenge.quiz);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
                   quiz: updatedQuiz
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 36:
                 updateQuizProgress = Math.min(userChallenge.quiz.result, 5);
                 updatedQuiz = quizService.endUserQuiz(userChallenge.quiz);
@@ -12341,36 +12341,36 @@ var ChallengeService = /*#__PURE__*/function () {
                     quizProgress: updateQuizProgress
                   })
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 40:
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
                   quiz: quizWithUpdatedQuestions ? quizWithUpdatedQuestions : userChallenge.quiz
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 42:
                 updatedQuiz = quizService.resetUserQuiz(userChallenge.quiz);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
                   quiz: updatedQuiz
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 45:
                 updatedExploration = explorationService.startUserExploration(userChallenge.exploration);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
                   exploration: updatedExploration
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 48:
                 updatedExploration = explorationService.updateUserExploration(userChallenge.exploration);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
                   exploration: updatedExploration
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 51:
                 updatedExploration = explorationService.setNotificationUserExploration(userChallenge.exploration);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
                   exploration: updatedExploration
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 54:
                 updatedExploration = explorationService.endUserExploration(userChallenge.exploration);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
@@ -12379,23 +12379,19 @@ var ChallengeService = /*#__PURE__*/function () {
                     explorationProgress: updatedExploration.progress
                   })
                 });
-                return _context9.abrupt("break", 69);
+                return _context9.abrupt("break", 67);
               case 57:
-                userAction = userChallenge.action;
-                if (action) {
-                  userAction = actionService.launchAction(action);
-                }
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
-                  action: userAction
+                  action: action ? actionService.launchAction(action) : userChallenge.action
                 });
-                return _context9.abrupt("break", 69);
-              case 61:
+                return _context9.abrupt("break", 67);
+              case 59:
                 updatedAction = actionService.setNotificationAction(userChallenge.action);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
                   action: updatedAction
                 });
-                return _context9.abrupt("break", 69);
-              case 64:
+                return _context9.abrupt("break", 67);
+              case 62:
                 updatedAction = actionService.endAction(userChallenge.action);
                 updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, {
                   action: updatedAction,
@@ -12403,33 +12399,33 @@ var ChallengeService = /*#__PURE__*/function () {
                     actionProgress: 5
                   })
                 });
-                return _context9.abrupt("break", 69);
-              case 67:
+                return _context9.abrupt("break", 67);
+              case 65:
                 updatedUserChallenge = userChallenge;
-                return _context9.abrupt("break", 69);
-              case 69:
-                _context9.prev = 69;
-                _context9.next = 72;
+                return _context9.abrupt("break", 67);
+              case 67:
+                _context9.prev = 67;
+                _context9.next = 70;
                 return this._client.save(updatedUserChallenge);
-              case 72:
+              case 70:
                 _yield$this$_client$s = _context9.sent;
                 userChallengeEntity = _yield$this$_client$s.data;
                 result = this.parseUserChallengeEntityToUserChallenge(userChallengeEntity);
                 return _context9.abrupt("return", result);
-              case 78:
-                _context9.prev = 78;
-                _context9.t1 = _context9["catch"](69);
+              case 76:
+                _context9.prev = 76;
+                _context9.t1 = _context9["catch"](67);
                 errorMessage = "Update user challenge error: ".concat(JSON.stringify(_context9.t1));
                 logStack('error', errorMessage);
                 _logger.default.error(errorMessage);
                 Sentry.captureException(_context9.t1);
                 throw _context9.t1;
-              case 85:
+              case 83:
               case "end":
                 return _context9.stop();
             }
           }
-        }, _callee8, this, [[69, 78]]);
+        }, _callee8, this, [[67, 76]]);
       }));
       function updateUserChallenge(_x7, _x8, _x9, _x10, _x11) {
         return _updateUserChallenge.apply(this, arguments);
diff --git a/index.html b/index.html
index 308c0e075e96eaf5e72efb69e3e6b05f2e69f14c..a339daf2e3e97e30238bcf5f79441722a3887d00 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212"><meta name="color-scheme" content="only dark">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.fc4bc60b9373625fdc9f.js"></script><script src="app/ecolyo.b6b47f77b5fabac557b6.js"></script></div></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212"><meta name="color-scheme" content="only dark">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.fc4bc60b9373625fdc9f.js"></script><script src="app/ecolyo.acd231610169e9bfaa06.js"></script></div></body></html>
\ No newline at end of file