From ad92a6787385ec991edc4c031633b10cd12bcb3c Mon Sep 17 00:00:00 2001 From: Bastien DUMONT <bdumont@grandlyon.com> Date: Wed, 15 Mar 2023 13:58:25 +0100 Subject: [PATCH] publish: Merge branch 'cleanup-redux' into 'dev' generated from commit ca12a903c26e0a3627a456127723ba8fa4b96266 --- ...41cb.js => ecolyo.11a0524f373f31cee670.js} | 23 +- ...1eff.js => ecolyo.9343f3201d05ad1a3cf3.js} | 100 ++- ...d8e2.js => ecolyo.36d65c19c36ee336be1e.js} | 15 +- ...de9c.js => ecolyo.b68bd78f52796a5a0574.js} | 15 +- ...bb12.js => ecolyo.5d999cf4bd9b64c4eb2f.js} | 40 +- ...2805.js => ecolyo.50adf68b820b9d0f117e.js} | 648 +++++++++--------- apple-touch-icon-retina.png | Bin 23363 -> 0 bytes cover.png | Bin 29305 -> 0 bytes index.html | 2 +- serviceWorker.js | 13 + 10 files changed, 439 insertions(+), 417 deletions(-) rename 2/{ecolyo.428a0f6e105059ec41cb.js => ecolyo.11a0524f373f31cee670.js} (99%) rename 3/{ecolyo.0e7e4206658f5e4b1eff.js => ecolyo.9343f3201d05ad1a3cf3.js} (99%) rename 4/{ecolyo.b36c04845ac8ccdfd8e2.js => ecolyo.36d65c19c36ee336be1e.js} (99%) rename 5/{ecolyo.4c1d9ae558d5214ade9c.js => ecolyo.b68bd78f52796a5a0574.js} (98%) rename 6/{ecolyo.8a0fb54d4ad7a438bb12.js => ecolyo.5d999cf4bd9b64c4eb2f.js} (99%) rename app/{ecolyo.c6f769f46df3b9432805.js => ecolyo.50adf68b820b9d0f117e.js} (99%) delete mode 100644 apple-touch-icon-retina.png delete mode 100644 cover.png diff --git a/2/ecolyo.428a0f6e105059ec41cb.js b/2/ecolyo.11a0524f373f31cee670.js similarity index 99% rename from 2/ecolyo.428a0f6e105059ec41cb.js rename to 2/ecolyo.11a0524f373f31cee670.js index 330b6544a..23dba3270 100644 --- a/2/ecolyo.428a0f6e105059ec41cb.js +++ b/2/ecolyo.11a0524f373f31cee670.js @@ -146,14 +146,12 @@ var AnalysisConsumption = function AnalysisConsumption(_ref) { var navigate = (0, _reactRouterDom.useNavigate)(); var client = (0, _cozyClient.useClient)(); var userPriceConsumption = aggregatedPerformanceIndicator.value || 0; - var profile = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profile; - }); var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.global; + return state.ecolyo; }), - fluidTypes = _useSelector.fluidTypes; + fluidTypes = _useSelector.global.fluidTypes, + profile = _useSelector.profile; var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -1124,24 +1122,17 @@ var AnalysisView = function AnalysisView() { var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), + selectedDate = _useSelector.chart.selectedDate, analysisNotification = _useSelector.global.analysisNotification, - monthlyAnalysisDate = _useSelector.profile.monthlyAnalysisDate; - - var _useSelector2 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.chart; - }), - selectedDate = _useSelector2.selectedDate; + _useSelector$profile = _useSelector.profile, + monthlyAnalysisDate = _useSelector$profile.monthlyAnalysisDate, + mailToken = _useSelector$profile.mailToken; var _useState3 = (0, _react.useState)(monthlyAnalysisDate), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), currentAnalysisDate = _useState4[0], setCurrentAnalysisDate = _useState4[1]; - var _useSelector3 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profile; - }), - mailToken = _useSelector3.mailToken; - var dispatch = (0, _reactRedux.useDispatch)(); var defineHeaderHeight = (0, _react.useCallback)(function (height) { setHeaderHeight(height); diff --git a/3/ecolyo.0e7e4206658f5e4b1eff.js b/3/ecolyo.9343f3201d05ad1a3cf3.js similarity index 99% rename from 3/ecolyo.0e7e4206658f5e4b1eff.js rename to 3/ecolyo.9343f3201d05ad1a3cf3.js index 3123e1b17..c19a010bb 100644 --- a/3/ecolyo.0e7e4206658f5e4b1eff.js +++ b/3/ecolyo.9343f3201d05ad1a3cf3.js @@ -1210,6 +1210,8 @@ var _chart = __webpack_require__("U6AS"); var _global = __webpack_require__("c4IZ"); +var _modal = __webpack_require__("lSJB"); + var _utils = __webpack_require__("c+yx"); __webpack_require__("xz5R"); @@ -1247,7 +1249,7 @@ var ConsumptionView = function ConsumptionView(_ref) { fluidStatus = _useSelector$global.fluidStatus, releaseNotes = _useSelector$global.releaseNotes, customPopupModal = _useSelector$global.customPopupModal, - openPartnersIssueModal = _useSelector$global.openPartnersIssueModal; + partnersIssueModal = _useSelector.modal.partnersIssueModal; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -1337,7 +1339,7 @@ var ConsumptionView = function ConsumptionView(_ref) { updatedProfile = _context.sent; if (updatedProfile) { - dispatch((0, _global.setPartnersIssue)(_objectSpread(_objectSpread({}, openPartnersIssueModal), {}, (0, _defineProperty2.default)({}, getPartnerKey(fluidType), false)))); + dispatch((0, _modal.openPartnersModal)(_objectSpread(_objectSpread({}, partnersIssueModal), {}, (0, _defineProperty2.default)({}, getPartnerKey(fluidType), false)))); } case 9: @@ -1351,7 +1353,7 @@ var ConsumptionView = function ConsumptionView(_ref) { return function (_x) { return _ref2.apply(this, arguments); }; - }(), [client, dispatch, openPartnersIssueModal]); + }(), [client, dispatch, partnersIssueModal]); var handleCloseCustomPopupModal = /*#__PURE__*/function () { var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { @@ -1480,7 +1482,7 @@ var ConsumptionView = function ConsumptionView(_ref) { return /*#__PURE__*/_react.default.createElement(_PartnerIssueModal.default, { key: issuedFluid.fluidType, issuedFluid: issuedFluid, - open: openPartnersIssueModal[getPartnerKey(issuedFluid.fluidType)], + open: partnersIssueModal[getPartnerKey(issuedFluid.fluidType)], handleCloseClick: handleClosePartnerIssueModal }); }), /*#__PURE__*/_react.default.createElement(_CustomPopupModal.default, { @@ -1975,7 +1977,7 @@ var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); var _fluid2 = _interopRequireDefault(__webpack_require__("z34f")); -var _partnersInfo = _interopRequireDefault(__webpack_require__("4zrG")); +var _partnersInfo2 = _interopRequireDefault(__webpack_require__("4zrG")); var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); @@ -2023,10 +2025,13 @@ var KonnectorViewerCard = function KonnectorViewerCard(_ref) { var trigger = fluidStatus.connection.trigger; var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.global; + return state.ecolyo; }), - statusArray = _useSelector.fluidStatus, - shouldRefreshConsent = _useSelector.shouldRefreshConsent; + currentChallenge = _useSelector.challenge.currentChallenge, + _useSelector$global = _useSelector.global, + statusArray = _useSelector$global.fluidStatus, + shouldRefreshConsent = _useSelector$global.shouldRefreshConsent, + partnersInfo = _useSelector$global.partnersInfo; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -2063,16 +2068,11 @@ var KonnectorViewerCard = function KonnectorViewerCard(_ref) { isOutdatedData = _useState14[0], setIsOutdatedData = _useState14[1]; - var _useSelector2 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.challenge; - }), - currentChallenge = _useSelector2.currentChallenge; - var fluidService = (0, _react.useMemo)(function () { return new _fluid2.default(client); }, [client]); var partnersInfoService = (0, _react.useMemo)(function () { - return new _partnersInfo.default(client); + return new _partnersInfo2.default(client); }, [client]); var lastDataDate = fluidType !== _fluid.FluidType.MULTIFLUID && statusArray[fluidType].lastDataDate ? statusArray[fluidType].lastDataDate.toLocaleString() + fluidType : fluidType; var iconType = (0, _picto.getParamPicto)(fluidStatus.fluidType); @@ -2166,7 +2166,7 @@ var KonnectorViewerCard = function KonnectorViewerCard(_ref) { }, _callee2); })), [client, dispatch, currentChallenge]); var handleAccountDeletion = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() { - var _updatedFluidStatus, partnersInfo, _updatedFluidStatus2; + var _updatedFluidStatus, _partnersInfo, _updatedFluidStatus2; return _regenerator.default.wrap(function _callee3$(_context3) { while (1) { @@ -2191,9 +2191,9 @@ var KonnectorViewerCard = function KonnectorViewerCard(_ref) { return partnersInfoService.getPartnersInfo(); case 8: - partnersInfo = _context3.sent; + _partnersInfo = _context3.sent; _context3.next = 11; - return fluidService.getFluidStatus(partnersInfo); + return fluidService.getFluidStatus(_partnersInfo); case 11: _updatedFluidStatus2 = _context3.sent; @@ -2211,7 +2211,7 @@ var KonnectorViewerCard = function KonnectorViewerCard(_ref) { })), [refreshChallengeState, updateGlobalFluidStatus, setActive, partnersInfoService, fluidService, dispatch]); var handleConnectionEnd = (0, _react.useCallback)( /*#__PURE__*/function () { var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(isSuccess) { - var auth, accountService, partnersInfo, _updatedFluidStatus; + var auth, accountService, _updatedFluidStatus3; return _regenerator.default.wrap(function _callee4$(_context4) { while (1) { @@ -2240,7 +2240,7 @@ var KonnectorViewerCard = function KonnectorViewerCard(_ref) { return handleAccountDeletion(); case 7: - _context4.next = 20; + _context4.next = 17; break; case 9: @@ -2254,30 +2254,25 @@ var KonnectorViewerCard = function KonnectorViewerCard(_ref) { case 12: if (!(updatedFluidStatus.length > 0)) { - _context4.next = 20; + _context4.next = 17; break; } _context4.next = 15; - return partnersInfoService.getPartnersInfo(); - - case 15: - partnersInfo = _context4.sent; - _context4.next = 18; return fluidService.getFluidStatus(partnersInfo); - case 18: - _updatedFluidStatus = _context4.sent; - dispatch((0, _global.setFluidStatus)(_updatedFluidStatus)); + case 15: + _updatedFluidStatus3 = _context4.sent; + dispatch((0, _global.setFluidStatus)(_updatedFluidStatus3)); - case 20: + case 17: setActive(false); setOpenModal(false); // TODO null state seems to be read before modal closing and display a success icon in modal setKonnectorState(null); setKonnectorErrorDescription(null); - case 24: + case 21: case "end": return _context4.stop(); } @@ -2961,16 +2956,14 @@ var FluidChartSlide = function FluidChartSlide(_ref) { var dispatch = (0, _reactRedux.useDispatch)(); var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.chart; - }), - currentTimeStep = _useSelector.currentTimeStep, - currentIndex = _useSelector.currentIndex; - - var _useSelector2 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.global; + return state.ecolyo; }), - fluidTypes = _useSelector2.fluidTypes, - fluidStatus = _useSelector2.fluidStatus; + _useSelector$chart = _useSelector.chart, + currentTimeStep = _useSelector$chart.currentTimeStep, + currentIndex = _useSelector$chart.currentIndex, + _useSelector$global = _useSelector.global, + fluidStatus = _useSelector$global.fluidStatus, + fluidTypes = _useSelector$global.fluidTypes; var _useState = (0, _react.useState)({ actualData: [], @@ -4237,16 +4230,14 @@ var ConsumptionVisualizer = function ConsumptionVisualizer(_ref) { setActive = _ref.setActive; var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.global; - }), - fluidStatus = _useSelector.fluidStatus, - fluidTypes = _useSelector.fluidTypes; - - var _useSelector2 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.chart; + return state.ecolyo; }), - currentDatachart = _useSelector2.currentDatachart, - currentDatachartIndex = _useSelector2.currentDatachartIndex; + _useSelector$chart = _useSelector.chart, + currentDatachart = _useSelector$chart.currentDatachart, + currentDatachartIndex = _useSelector$chart.currentDatachartIndex, + _useSelector$global = _useSelector.global, + fluidStatus = _useSelector$global.fluidStatus, + fluidTypes = _useSelector$global.fluidTypes; var dataload = currentDatachart.actualData[currentDatachartIndex]; var compareDataload = currentDatachart.comparisonData ? currentDatachart.comparisonData[currentDatachartIndex] : null; @@ -5631,15 +5622,12 @@ var FluidChart = function FluidChart(_ref) { var client = (0, _cozyClient.useClient)(); var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.global; - }), - fluidStatus = _useSelector.fluidStatus; - - var _useSelector2 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.chart; + return state.ecolyo; }), - currentTimeStep = _useSelector2.currentTimeStep, - selectedDate = _useSelector2.selectedDate; + _useSelector$chart = _useSelector.chart, + currentTimeStep = _useSelector$chart.currentTimeStep, + selectedDate = _useSelector$chart.selectedDate, + fluidStatus = _useSelector.global.fluidStatus; var _useExploration = (0, _useExploration3.default)(), _useExploration2 = (0, _slicedToArray2.default)(_useExploration, 2), diff --git a/4/ecolyo.b36c04845ac8ccdfd8e2.js b/4/ecolyo.36d65c19c36ee336be1e.js similarity index 99% rename from 4/ecolyo.b36c04845ac8ccdfd8e2.js rename to 4/ecolyo.36d65c19c36ee336be1e.js index b0b9e8790..d6c6faec1 100644 --- a/4/ecolyo.b36c04845ac8ccdfd8e2.js +++ b/4/ecolyo.36d65c19c36ee336be1e.js @@ -95,18 +95,15 @@ var EcogestureView = function EcogestureView() { var client = (0, _cozyClient.useClient)(); var dispatch = (0, _reactRedux.useDispatch)(); var tab = new URLSearchParams((0, _reactRouterDom.useLocation)().search).get('tab'); - var profileType = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profileType; - }); - var profileEcogesture = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profileEcogesture; - }); var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profile; + return state.ecolyo; }), - haveSeenEcogestureModal = _useSelector.haveSeenEcogestureModal, - isProfileEcogestureCompleted = _useSelector.isProfileEcogestureCompleted; + _useSelector$profile = _useSelector.profile, + haveSeenEcogestureModal = _useSelector$profile.haveSeenEcogestureModal, + isProfileEcogestureCompleted = _useSelector$profile.isProfileEcogestureCompleted, + profileEcogesture = _useSelector.profileEcogesture, + profileType = _useSelector.profileType; var _useState3 = (0, _react.useState)(tab ? parseInt(tab) : _ecogesture.EcogestureTab.OBJECTIVE), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), diff --git a/5/ecolyo.4c1d9ae558d5214ade9c.js b/5/ecolyo.b68bd78f52796a5a0574.js similarity index 98% rename from 5/ecolyo.4c1d9ae558d5214ade9c.js rename to 5/ecolyo.b68bd78f52796a5a0574.js index 872207057..886876155 100644 --- a/5/ecolyo.4c1d9ae558d5214ade9c.js +++ b/5/ecolyo.b68bd78f52796a5a0574.js @@ -120,16 +120,13 @@ var DateNavigator = function DateNavigator(_ref) { var dispatch = (0, _reactRedux.useDispatch)(); var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.chart; + return state.ecolyo; }), - currentTimeStep = _useSelector.currentTimeStep, - selectedDate = _useSelector.selectedDate, - currentIndex = _useSelector.currentIndex; - - var _useSelector2 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.global; - }), - fluidStatus = _useSelector2.fluidStatus; + _useSelector$chart = _useSelector.chart, + currentTimeStep = _useSelector$chart.currentTimeStep, + selectedDate = _useSelector$chart.selectedDate, + currentIndex = _useSelector$chart.currentIndex, + fluidStatus = _useSelector.global.fluidStatus; var disablePrev = selectedDate < _luxon.DateTime.local(0, 1, 1).setZone('utc', { keepLocalTime: true diff --git a/6/ecolyo.8a0fb54d4ad7a438bb12.js b/6/ecolyo.5d999cf4bd9b64c4eb2f.js similarity index 99% rename from 6/ecolyo.8a0fb54d4ad7a438bb12.js rename to 6/ecolyo.5d999cf4bd9b64c4eb2f.js index e60253ab7..2cf57f8e4 100644 --- a/6/ecolyo.8a0fb54d4ad7a438bb12.js +++ b/6/ecolyo.5d999cf4bd9b64c4eb2f.js @@ -53,14 +53,12 @@ var ReportOptions = function ReportOptions() { var client = (0, _cozyClient.useClient)(); var dispatch = (0, _reactRedux.useDispatch)(); - var profile = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profile; - }); var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.global; + return state.ecolyo; }), - fluidStatus = _useSelector.fluidStatus; + fluidStatus = _useSelector.global.fluidStatus, + profile = _useSelector.profile; var _useState = (0, _react.useState)(null), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -305,12 +303,11 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var ProfileTypeOptions = function ProfileTypeOptions() { - var profile = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profile; - }); - var profileType = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profileType; - }); + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo; + }), + profile = _useSelector.profile, + profileType = _useSelector.profileType; var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; @@ -1905,6 +1902,21 @@ var OptionsView = function OptionsView() { setHeaderHeight(height); }; + var beforeInstallPrompt = null; + window.addEventListener('beforeinstallprompt', eventHandler, errorHandler); + + function eventHandler(event) { + beforeInstallPrompt = event; + } + + function errorHandler(e) { + console.log('error: ' + e); + } + + function install() { + if (beforeInstallEvent) beforeInstallPrompt.prompt(); + } + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { titleKey: 'common.title_options' }), /*#__PURE__*/_react.default.createElement(_Header.default, { @@ -1912,7 +1924,9 @@ var OptionsView = function OptionsView() { desktopTitleKey: 'common.title_options' }), /*#__PURE__*/_react.default.createElement(_Content.default, { height: headerHeight - }, /*#__PURE__*/_react.default.createElement(_ProfileTypeOptions.default, null), /*#__PURE__*/_react.default.createElement(_exportOptions.default, null), /*#__PURE__*/_react.default.createElement(_ReportOptions.default, null), /*#__PURE__*/_react.default.createElement(_HelpLink.default, null), /*#__PURE__*/_react.default.createElement(_LegalNoticeLink.default, null), /*#__PURE__*/_react.default.createElement(_GCULink.default, null), /*#__PURE__*/_react.default.createElement(_MatomoOptOut.default, null), /*#__PURE__*/_react.default.createElement("div", { + }, /*#__PURE__*/_react.default.createElement(_ProfileTypeOptions.default, null), /*#__PURE__*/_react.default.createElement(_exportOptions.default, null), /*#__PURE__*/_react.default.createElement(_ReportOptions.default, null), /*#__PURE__*/_react.default.createElement(_HelpLink.default, null), /*#__PURE__*/_react.default.createElement(_LegalNoticeLink.default, null), /*#__PURE__*/_react.default.createElement(_GCULink.default, null), /*#__PURE__*/_react.default.createElement("button", { + onClick: install + }, "Installer"), /*#__PURE__*/_react.default.createElement(_MatomoOptOut.default, null), /*#__PURE__*/_react.default.createElement("div", { className: "parameters-logos" }, /*#__PURE__*/_react.default.createElement("img", { src: _logos_partenaires.default, @@ -2109,7 +2123,7 @@ var HelpLink = function HelpLink() { return /*#__PURE__*/_react.default.createElement("div", { className: "help-root", onClick: function onClick() { - return dispatch((0, _modal.updateModalIsFeedbacksOpen)(true)); + return dispatch((0, _modal.openFeedbackModal)(true)); } }, /*#__PURE__*/_react.default.createElement("div", { className: "help-content" diff --git a/app/ecolyo.c6f769f46df3b9432805.js b/app/ecolyo.50adf68b820b9d0f117e.js similarity index 99% rename from app/ecolyo.c6f769f46df3b9432805.js rename to app/ecolyo.50adf68b820b9d0f117e.js index 191f14ae0..0f6e72c4c 100644 --- a/app/ecolyo.c6f769f46df3b9432805.js +++ b/app/ecolyo.50adf68b820b9d0f117e.js @@ -64,7 +64,7 @@ /******/ /******/ // script path function /******/ function jsonpScriptSrc(chunkId) { -/******/ return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"2":"428a0f6e105059ec41cb","3":"0e7e4206658f5e4b1eff","4":"b36c04845ac8ccdfd8e2","5":"4c1d9ae558d5214ade9c","6":"8a0fb54d4ad7a438bb12","7":"403585665c5e67c3d156","8":"8763ca2635d712139819","9":"9ad8f654859d6a5af353"}[chunkId] + ".js" +/******/ return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"2":"11a0524f373f31cee670","3":"9343f3201d05ad1a3cf3","4":"36d65c19c36ee336be1e","5":"b68bd78f52796a5a0574","6":"5d999cf4bd9b64c4eb2f","7":"403585665c5e67c3d156","8":"8763ca2635d712139819","9":"9ad8f654859d6a5af353"}[chunkId] + ".js" /******/ } /******/ /******/ // The require function @@ -1685,6 +1685,8 @@ var _chart = __webpack_require__("U6AS"); var _global = __webpack_require__("c4IZ"); +var _modal = __webpack_require__("lSJB"); + var _profile = __webpack_require__("jPH6"); var _profileEcogesture = __webpack_require__("Zmlh"); @@ -1841,7 +1843,7 @@ var SplashRoot = function SplashRoot(_ref) { if (Object.values(partnersIssue).some(function (issue) { return issue; })) { - dispatch((0, _global.setPartnersIssue)(partnersIssue)); + dispatch((0, _modal.openPartnersModal)(partnersIssue)); } } } catch (error) { @@ -1890,63 +1892,64 @@ var SplashRoot = function SplashRoot(_ref) { } function _loadData() { - _loadData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() { - var initializationService, customPopupService, ms, migrationsResult, termsStatus, profile, profileType, profileEcogesture, _yield$Promise$all, _yield$Promise$all2, ecogestureHash, duelHash, quizHash, challengeHash, explorationHash, analysisResult, fluidStatus, refDate, lastDataDate, _iterator, _step, fluid, userChallengeList, _filteredCurrentOngoi, _filteredCurrentOngoi2, _filteredCurrentOngoi3, _filteredCurrentDuelC, filteredCurrentOngoingChallenge, actionService, updatedUserChallenge, filteredCurrentDuelChallenge, _yield$initialization, _updatedUserChallenge, dataloads, challengeService, _yield$challengeServi, isDone, customPopup, partnersInfoService, partnersInfo; + _loadData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() { + var initializationService, customPopupService, partnersInfoService, ms, migrationsResult, termsStatus, profile, profileType, profileEcogesture, _yield$Promise$all, _yield$Promise$all2, ecogestureHash, duelHash, quizHash, challengeHash, explorationHash, analysisResult, fluidStatus, refDate, lastDataDate, _iterator, _step, fluid, userChallengeList, _filteredCurrentOngoi, _filteredCurrentOngoi2, _filteredCurrentOngoi3, _filteredCurrentDuelC, filteredCurrentOngoingChallenge, actionService, updatedUserChallenge, filteredCurrentDuelChallenge, _yield$initialization, _updatedUserChallenge, dataloads, challengeService, _yield$challengeServi, isDone; - return _regenerator.default.wrap(function _callee4$(_context4) { + return _regenerator.default.wrap(function _callee6$(_context6) { while (1) { - switch (_context4.prev = _context4.next) { + switch (_context6.prev = _context6.next) { case 0: initializationService = new _initialization.default(client, setInitStep, setInitStepErrors); customPopupService = new _customPopup.default(client); + partnersInfoService = new _partnersInfo.default(client); ms = new _migration2.MigrationService(client, setInitStepErrors); - _context4.prev = 3; - _context4.next = 6; + _context6.prev = 4; + _context6.next = 7; return ms.runMigrations(_migration.migrations); - case 6: - migrationsResult = _context4.sent; + case 7: + migrationsResult = _context6.sent; // Init last release notes when they exist dispatch((0, _global.showReleaseNotes)(migrationsResult.show, migrationsResult.notes, migrationsResult.redirectLink)); // init Terms - _context4.next = 10; + _context6.next = 11; return initializationService.initConsent(); - case 10: - termsStatus = _context4.sent; + case 11: + termsStatus = _context6.sent; if (subscribed) dispatch((0, _global.updateTermValidation)(termsStatus)); // Init fluidPrices - _context4.next = 14; + _context6.next = 15; return initializationService.initFluidPrices(); - case 14: - _context4.next = 16; + case 15: + _context6.next = 17; return initializationService.initProfile(); - case 16: - profile = _context4.sent; - _context4.next = 19; + case 17: + profile = _context6.sent; + _context6.next = 20; return initializationService.initProfileType(); - case 19: - profileType = _context4.sent; - _context4.next = 22; + case 20: + profileType = _context6.sent; + _context6.next = 23; return initializationService.initProfileEcogesture(); - case 22: - profileEcogesture = _context4.sent; + case 23: + profileEcogesture = _context6.sent; if (!(subscribed && profile)) { - _context4.next = 46; + _context6.next = 47; break; } setValidExploration(_userExploration.UserExplorationID.EXPLORATION007); - _context4.next = 27; + _context6.next = 28; return Promise.all([initializationService.initEcogesture(profile.ecogestureHash), initializationService.initDuelEntity(profile.duelHash), initializationService.initQuizEntity(profile.quizHash), initializationService.initExplorationEntity(profile.challengeHash), initializationService.initChallengeEntity(profile.explorationHash), initializationService.initAnalysis(profile)]); - case 27: - _yield$Promise$all = _context4.sent; + case 28: + _yield$Promise$all = _context6.sent; _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 6); ecogestureHash = _yield$Promise$all2[0]; duelHash = _yield$Promise$all2[1]; @@ -1973,12 +1976,12 @@ var SplashRoot = function SplashRoot(_ref) { dispatch((0, _global.toggleAnalysisNotification)(!profile.haveSeenLastAnalysis)); - case 46: - _context4.next = 48; + case 47: + _context6.next = 49; return initializationService.initFluidStatus(); - case 48: - fluidStatus = _context4.sent; + case 49: + fluidStatus = _context6.sent; if (subscribed) { dispatch((0, _global.setFluidStatus)(fluidStatus)); @@ -2006,14 +2009,14 @@ var SplashRoot = function SplashRoot(_ref) { } // Init Challenge - _context4.next = 52; + _context6.next = 53; return initializationService.initUserChallenges(fluidStatus); - case 52: - userChallengeList = _context4.sent; + case 53: + userChallengeList = _context6.sent; if (!subscribed) { - _context4.next = 79; + _context6.next = 80; break; } @@ -2028,22 +2031,22 @@ var SplashRoot = function SplashRoot(_ref) { if (!(((_filteredCurrentOngoi2 = filteredCurrentOngoingChallenge[0]) === null || _filteredCurrentOngoi2 === void 0 ? void 0 : _filteredCurrentOngoi2.action.state) === _userAction.UserActionState.ONGOING)) { - _context4.next = 63; + _context6.next = 64; break; } actionService = new _action.default(client); - _context4.next = 61; + _context6.next = 62; return actionService.isActionDone(filteredCurrentOngoingChallenge[0]); - case 61: - updatedUserChallenge = _context4.sent; + case 62: + updatedUserChallenge = _context6.sent; if (updatedUserChallenge) { dispatch((0, _challenge2.updateUserChallengeList)(updatedUserChallenge)); } - case 63: + case 64: // Set Notification if action state is notification if (((_filteredCurrentOngoi3 = filteredCurrentOngoingChallenge[0]) === null || _filteredCurrentOngoi3 === void 0 ? void 0 : _filteredCurrentOngoi3.action.state) === _userAction.UserActionState.NOTIFICATION) { dispatch((0, _global.toggleChallengeActionNotification)(true)); @@ -2054,83 +2057,108 @@ var SplashRoot = function SplashRoot(_ref) { }); if (!(((_filteredCurrentDuelC = filteredCurrentDuelChallenge[0]) === null || _filteredCurrentDuelC === void 0 ? void 0 : _filteredCurrentDuelC.duel.state) === _userDuel.UserDuelState.ONGOING)) { - _context4.next = 79; + _context6.next = 80; break; } - _context4.next = 68; + _context6.next = 69; return initializationService.initDuelProgress(filteredCurrentDuelChallenge[0]); - case 68: - _yield$initialization = _context4.sent; + case 69: + _yield$initialization = _context6.sent; _updatedUserChallenge = _yield$initialization.updatedUserChallenge; dataloads = _yield$initialization.dataloads; if (!subscribed) { - _context4.next = 79; + _context6.next = 80; break; } dispatch((0, _challenge2.setChallengeConsumption)(_updatedUserChallenge, dataloads)); // Check is duel is done and display notification challengeService = new _challenge.default(client); - _context4.next = 76; + _context6.next = 77; return challengeService.isChallengeDone(_updatedUserChallenge, dataloads); - case 76: - _yield$challengeServi = _context4.sent; + case 77: + _yield$challengeServi = _context6.sent; isDone = _yield$challengeServi.isDone; dispatch((0, _global.toggleChallengeDuelNotification)(isDone)); - case 79: + case 80: if (!profile) { - _context4.next = 82; + _context6.next = 83; break; } - _context4.next = 82; + _context6.next = 83; return _usageEvent2.default.addEvent(client, { type: _usageEvent.UsageEventType.CONNECTION_EVENT, result: profile.isFirstConnection ? 'firstConnection' : undefined, context: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ? 'mobile' : 'desktop' }); - case 82: - _context4.next = 84; - return customPopupService.getCustomPopup(); - - case 84: - customPopup = _context4.sent; - - if (!(profile && customPopup)) { - _context4.next = 88; - break; - } - - _context4.next = 88; - return processCustomPopup(profile, customPopup); - - case 88: - partnersInfoService = new _partnersInfo.default(client); - _context4.next = 91; - return partnersInfoService.getPartnersInfo(); - - case 91: - partnersInfo = _context4.sent; - - if (!(profile && partnersInfo)) { - _context4.next = 97; - break; - } + case 83: + /** + * Load custom popup and partners info synchronously so these treatments don't block the loading + */ + customPopupService.getCustomPopup().then( /*#__PURE__*/function () { + var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(customPopup) { + return _regenerator.default.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + if (!(profile && customPopup)) { + _context4.next = 3; + break; + } + + _context4.next = 3; + return processCustomPopup(profile, customPopup); + + case 3: + case "end": + return _context4.stop(); + } + } + }, _callee4); + })); - _context4.next = 95; - return processFluidsStatus(profile, partnersInfo); + return function (_x7) { + return _ref5.apply(this, arguments); + }; + }()); + partnersInfoService.getPartnersInfo().then( /*#__PURE__*/function () { + var _ref6 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(partnersInfo) { + return _regenerator.default.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + if (!(profile && partnersInfo)) { + _context5.next = 5; + break; + } + + _context5.next = 3; + return processFluidsStatus(profile, partnersInfo); + + case 3: + _context5.next = 5; + return processPartnersStatus(profile, partnersInfo); + + case 5: + case "end": + return _context5.stop(); + } + } + }, _callee5); + })); - case 95: - _context4.next = 97; - return processPartnersStatus(profile, partnersInfo); + return function (_x8) { + return _ref6.apply(this, arguments); + }; + }()); - case 97: if (subscribed) { _logger.default.info('[Initialization] Finished successfully !'); @@ -2141,29 +2169,29 @@ var SplashRoot = function SplashRoot(_ref) { }); } - _context4.next = 105; + _context6.next = 93; break; - case 100: - _context4.prev = 100; - _context4.t0 = _context4["catch"](3); + case 88: + _context6.prev = 88; + _context6.t0 = _context6["catch"](4); - if (_context4.t0.message === 'Failed to fetch' && !initStepErrors) { + if (_context6.t0.message === 'Failed to fetch' && !initStepErrors) { setInitStepErrors(_initialisationSteps.InitStepsErrors.UNKNOWN_ERROR); } - _logger.default.error("[Initialization] Error : ".concat(_context4.t0)); + _logger.default.error("[Initialization] Error : ".concat(_context6.t0)); Sentry.captureException(JSON.stringify({ - error: _context4.t0 + error: _context6.t0 })); - case 105: + case 93: case "end": - return _context4.stop(); + return _context6.stop(); } } - }, _callee4, null, [[3, 100]]); + }, _callee6, null, [[4, 88]]); })); return _loadData.apply(this, arguments); } @@ -3677,37 +3705,42 @@ var initialState = { var chartReducer = function chartReducer() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; var action = arguments.length > 1 ? arguments[1] : undefined; + if (action.payload == undefined) return state; + + var updateState = function updateState(updates) { + return _objectSpread(_objectSpread({}, state), updates); + }; switch (action.type) { case _chart.SET_SELECTED_DATE: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ selectedDate: action.payload - }) : state; + }); case _chart.SET_CURRENT_TIMESTEP: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ currentTimeStep: action.payload - }) : state; + }); case _chart.SET_CURRENT_INDEX: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ currentIndex: action.payload - }) : state; + }); case _chart.SET_CURRENT_DATACHART: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ currentDatachart: action.payload - }) : state; + }); case _chart.SET_CURRENT_DATACHART_INDEX: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ currentDatachartIndex: action.payload - }) : state; + }); case _chart.SET_LOADING: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ loading: action.payload - }) : state; + }); default: return state; @@ -4604,14 +4637,10 @@ var ActionBegin = function ActionBegin(_ref) { t = _useI18n.t; var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profile; - }), - isProfileTypeCompleted = _useSelector.isProfileTypeCompleted; - - var _useSelector2 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.global; + return state.ecolyo; }), - fluidTypes = _useSelector2.fluidTypes; + fluidTypes = _useSelector.global.fluidTypes, + isProfileTypeCompleted = _useSelector.profile.isProfileTypeCompleted; var _useState = (0, _react.useState)(), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -5369,7 +5398,8 @@ var DuelOngoing = function DuelOngoing(_ref) { var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.challenge; }), - currentDataload = _useSelector.currentDataload; + currentDataload = _useSelector.currentDataload, + userChallengeList = _useSelector.userChallengeList; var dispatch = (0, _reactRedux.useDispatch)(); var navigate = (0, _reactRouterDom.useNavigate)(); @@ -5402,18 +5432,12 @@ var DuelOngoing = function DuelOngoing(_ref) { var _useState11 = (0, _react.useState)(), _useState12 = (0, _slicedToArray2.default)(_useState11, 2), finishedDataLoad = _useState12[0], - setfinishedDataLoad = _useState12[1]; + setFinishedDataLoad = _useState12[1]; var chartContainer = (0, _react.useRef)(null); var challengeService = (0, _react.useMemo)(function () { return new _challenge.default(client); }, [client]); - - var _useSelector2 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.challenge; - }), - userChallengeList = _useSelector2.userChallengeList; - var duel = userChallenge.duel; var title = duel.title; var durationInDays = duel.duration.days; @@ -5568,7 +5592,7 @@ var DuelOngoing = function DuelOngoing(_ref) { dataloads = _context4.sent; if (subscribed) { - setfinishedDataLoad(dataloads); + setFinishedDataLoad(dataloads); } case 5: @@ -9937,7 +9961,7 @@ var _interopRequireDefault = __webpack_require__("TqRt"); Object.defineProperty(exports, "__esModule", { value: true }); -exports.ecolyoReducer = exports.default = void 0; +exports.defaultAction = exports.default = void 0; var Sentry = _interopRequireWildcard(__webpack_require__("agHs")); @@ -9965,16 +9989,20 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var defaultAction = { + type: null, + payload: undefined +}; +exports.defaultAction = defaultAction; var ecolyoReducer = (0, _redux.combineReducers)({ + challenge: _challenge.challengeReducer, + chart: _chart.chartReducer, global: _global.globalReducer, + modal: _modal.modalReducer, profile: _profile.profileReducer, - profileType: _profileType.profileTypeReducer, profileEcogesture: _profileEcogesture.profileEcogestureReducer, - chart: _chart.chartReducer, - modal: _modal.modalReducer, - challenge: _challenge.challengeReducer + profileType: _profileType.profileTypeReducer }); -exports.ecolyoReducer = ecolyoReducer; var sentryReduxEnhancer = Sentry.createReduxEnhancer({}); var configureStore = function configureStore(client, persistedState) { @@ -10182,7 +10210,7 @@ var CozyBar = function CozyBar(_ref) { }, [backFunction, navigate]); var handleClickFeedbacks = function handleClickFeedbacks() { - dispatch((0, _modal.updateModalIsFeedbacksOpen)(true)); + dispatch((0, _modal.openFeedbackModal)(true)); }; var cozyBarCustom = function cozyBarCustom(screen) { @@ -14560,10 +14588,11 @@ var initialState = { var profileEcogestureReducer = function profileEcogestureReducer() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; var action = arguments.length > 1 ? arguments[1] : undefined; + if (action.payload == undefined) return state; switch (action.type) { - case _profileEcogesture.UPDATE_PROFILEECOGESTURE: - case _profileEcogesture.CREATE_NEW_PROFILEECOGESTURE: + case _profileEcogesture.UPDATE_PROFILE_ECOGESTURE: + case _profileEcogesture.CREATE_NEW_PROFILE_ECOGESTURE: return _objectSpread(_objectSpread({}, state), action.payload); default: @@ -18429,24 +18458,27 @@ var initialState = { var challengeReducer = function challengeReducer() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; var action = arguments.length > 1 ? arguments[1] : undefined; + if (action.payload == undefined) return state; + + var updateState = function updateState(updates) { + return _objectSpread(_objectSpread({}, state), updates); + }; switch (action.type) { case _challenge.SET_USER_CHALLENGE_LIST: - if (action.payload !== undefined) { + { var filteredCurrentChallenge = action.payload.filter(function (challenge) { return challenge.state === _userChallenge.UserChallengeState.ONGOING || challenge.state === _userChallenge.UserChallengeState.DUEL; }); - var currentChallenge = filteredCurrentChallenge[0] ? filteredCurrentChallenge[0] : null; - return _objectSpread(_objectSpread({}, state), {}, { + var currentChallenge = filteredCurrentChallenge[0] || null; + return updateState({ userChallengeList: action.payload, currentChallenge: currentChallenge }); - } else { - return state; } case _challenge.UPDATE_USER_CHALLENGE_LIST: - if (action.payload !== undefined) { + { var id = action.payload.id; var _currentChallenge = action.payload.state === _userChallenge.UserChallengeState.ONGOING || action.payload.state === _userChallenge.UserChallengeState.DUEL ? action.payload : null; @@ -18456,16 +18488,14 @@ var challengeReducer = function challengeReducer() { return challenge.id === id; }); updatedList[findIndex] = action.payload; - return _objectSpread(_objectSpread({}, state), {}, { + return updateState({ userChallengeList: updatedList, - currentChallenge: _currentChallenge ? _currentChallenge : state.currentChallenge + currentChallenge: _currentChallenge || state.currentChallenge }); - } else { - return state; } case _challenge.UNLOCK_NEXT_USER_CHALLENGE: - if (action.payload !== undefined) { + { var _id = action.payload.id; var _updatedList = (0, _toConsumableArray2.default)(state.userChallengeList); @@ -18482,16 +18512,14 @@ var challengeReducer = function challengeReducer() { }); } - return _objectSpread(_objectSpread({}, state), {}, { + return updateState({ userChallengeList: _updatedList, currentChallenge: null }); - } else { - return state; } case _challenge.SET_CHALLENGE_CONSUMPTION: - if (action.payload !== undefined) { + { var _id2 = action.payload.userChallenge.id; var _updatedList2 = (0, _toConsumableArray2.default)(state.userChallengeList); @@ -18501,13 +18529,11 @@ var challengeReducer = function challengeReducer() { }); _updatedList2[_findIndex2] = action.payload.userChallenge; - return _objectSpread(_objectSpread({}, state), {}, { + return updateState({ userChallengeList: _updatedList2, currentChallenge: state.currentChallenge && state.currentChallenge.id === action.payload.userChallenge.id ? action.payload.userChallenge : state.currentChallenge, currentDataload: action.payload.currentDataload }); - } else { - return state; } default: @@ -18711,10 +18737,9 @@ function updateProfileTypeSuccess(updatedProfileType) { type: UPDATE_PROFILETYPE, payload: updatedProfileType }; -} // eslint-disable-next-line @typescript-eslint/no-explicit-any - +} -function updateProfileType(upd) { +function updateProfileType(updates) { return /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(dispatch, getState, _ref) { var client, profileTypeEntityService, updatedProfileType; @@ -18725,7 +18750,7 @@ function updateProfileType(upd) { client = _ref.client; profileTypeEntityService = new _profileTypeEntity.default(client); _context.next = 4; - return profileTypeEntityService.updateProfileType(upd); + return profileTypeEntityService.updateProfileType(updates); case 4: updatedProfileType = _context.sent; @@ -18746,10 +18771,9 @@ function updateProfileType(upd) { return _ref2.apply(this, arguments); }; }(); -} // eslint-disable-next-line @typescript-eslint/no-explicit-any - +} -function newProfileTypeEntry(upd) { +function newProfileTypeEntry(updates) { return /*#__PURE__*/function () { var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(dispatch, getState, _ref3) { var client, _yield$client$create, newProfileType; @@ -18760,7 +18784,7 @@ function newProfileTypeEntry(upd) { case 0: client = _ref3.client; _context2.next = 3; - return client.create(_doctypes.PROFILETYPE_DOCTYPE, upd); + return client.create(_doctypes.PROFILETYPE_DOCTYPE, updates); case 3: _yield$client$create = _context2.sent; @@ -19396,18 +19420,18 @@ exports.setCurrentIndex = setCurrentIndex; exports.setCurrentTimeStep = setCurrentTimeStep; exports.setLoading = setLoading; exports.setSelectedDate = setSelectedDate; -var SET_CURRENT_TIMESTEP = 'SET_CURRENT_TIMESTEP'; -exports.SET_CURRENT_TIMESTEP = SET_CURRENT_TIMESTEP; -var SET_SELECTED_DATE = 'SET_SELECTED_DATE'; -exports.SET_SELECTED_DATE = SET_SELECTED_DATE; -var SET_CURRENT_INDEX = 'SET_CURRENT_INDEX'; -exports.SET_CURRENT_INDEX = SET_CURRENT_INDEX; var SET_CURRENT_DATACHART = 'SET_CURRENT_DATACHART'; exports.SET_CURRENT_DATACHART = SET_CURRENT_DATACHART; var SET_CURRENT_DATACHART_INDEX = 'SET_CURRENT_DATACHART_INDEX'; exports.SET_CURRENT_DATACHART_INDEX = SET_CURRENT_DATACHART_INDEX; +var SET_CURRENT_INDEX = 'SET_CURRENT_INDEX'; +exports.SET_CURRENT_INDEX = SET_CURRENT_INDEX; +var SET_CURRENT_TIMESTEP = 'SET_CURRENT_TIMESTEP'; +exports.SET_CURRENT_TIMESTEP = SET_CURRENT_TIMESTEP; var SET_LOADING = 'SET_LOADING'; exports.SET_LOADING = SET_LOADING; +var SET_SELECTED_DATE = 'SET_SELECTED_DATE'; +exports.SET_SELECTED_DATE = SET_SELECTED_DATE; function setSelectedDate(date) { return { @@ -20003,19 +20027,15 @@ var Content = function Content(_ref) { var dispatch = (0, _reactRedux.useDispatch)(); var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.global; - }), - screenType = _useSelector.screenType; - - var _useSelector2 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.modal; + return state.ecolyo; }), - isFeedbacksOpen = _useSelector2.isFeedbacksOpen; + screenType = _useSelector.global.screenType, + isFeedbacksOpen = _useSelector.modal.isFeedbacksOpen; var cozyBarHeight = 48; var cozyNavHeight = 56; var handleFeedbackModalClose = (0, _react.useCallback)(function () { - dispatch((0, _modal.updateModalIsFeedbacksOpen)(false)); + dispatch((0, _modal.openFeedbackModal)(false)); }, [dispatch]); // Set listeners for scroll (0, _react.useEffect)(function () { @@ -22266,10 +22286,11 @@ var initialState = { description: '', endDate: '' }, - openPartnersIssueModal: { - enedis: false, - egl: false, - grdf: false + partnersInfo: { + egl_failure: false, + enedis_failure: false, + grdf_failure: false, + notification_activated: false }, shouldRefreshConsent: false, sgeConnect: { @@ -22300,84 +22321,84 @@ var getFluidTypesFromStatus = function getFluidTypesFromStatus(fluidStatus) { var globalReducer = function globalReducer() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; var action = arguments.length > 1 ? arguments[1] : undefined; + if (action.payload == undefined) return state; + + var updateState = function updateState(updates) { + return _objectSpread(_objectSpread({}, state), updates); + }; switch (action.type) { case _global.CHANGE_SCREEN_TYPE: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ screenType: action.payload - }) : state; + }); case _global.TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ challengeExplorationNotification: action.payload - }) : state; + }); case _global.TOGGLE_CHALLENGE_ACTION_NOTIFICATION: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ challengeActionNotification: action.payload - }) : state; + }); case _global.TOGGLE_CHALLENGE_DUEL_NOTIFICATION: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ challengeDuelNotification: action.payload - }) : state; + }); case _global.TOGGLE_ANALYSIS_NOTIFICATION: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ analysisNotification: action.payload - }) : state; + }); case _global.SET_FLUID_STATUS: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ fluidStatus: action.payload, fluidTypes: getFluidTypesFromStatus(action.payload) - }) : state; + }); case _global.UPDATE_TERMS_VALIDATION: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ termsStatus: action.payload - }) : state; + }); case _global.SHOW_RELEASE_NOTES: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ releaseNotes: action.payload - }) : state; + }); - case _global.SET_PARTNERS_ISSUE: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { - openPartnersIssueModal: action.payload - }) : state; + case _global.SET_PARTNERS_INFO: + return updateState({ + partnersInfo: action.payload + }); case _global.SET_CUSTOM_POPUP: - return _objectSpread(_objectSpread({}, state), {}, { + return updateState({ customPopupModal: action.payload }); case _global.SET_SHOULD_REFRESH_CONSENT: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ shouldRefreshConsent: action.payload - }) : state; + }); case _global.UPDATE_FLUID_CONNECTION: - if (action.payload !== undefined) { - var updatedFluidStatus = (0, _toConsumableArray2.default)(state.fluidStatus); - var fluidType = action.payload.fluidType; - var findIndex = state.fluidStatus.findIndex(function (fluid) { - return fluid.fluidType === fluidType; - }); - updatedFluidStatus[findIndex].connection = action.payload.fluidConnection; - return _objectSpread(_objectSpread({}, state), {}, { - fluidStatus: updatedFluidStatus - }); - } else { - return state; - } + var updatedFluidStatus = (0, _toConsumableArray2.default)(state.fluidStatus); + var fluidType = action.payload.fluidType; + var findIndex = state.fluidStatus.findIndex(function (fluid) { + return fluid.fluidType === fluidType; + }); + updatedFluidStatus[findIndex].connection = action.payload.fluidConnection; + return _objectSpread(_objectSpread({}, state), {}, { + fluidStatus: updatedFluidStatus + }); case _global.UPDATE_SGE_CONNECT: - if (action.payload != undefined) return _objectSpread(_objectSpread({}, state), {}, { + return updateState({ sgeConnect: action.payload }); - return state; default: return state; @@ -22806,7 +22827,7 @@ var _interopRequireDefault = __webpack_require__("TqRt"); Object.defineProperty(exports, "__esModule", { value: true }); -exports.UPDATE_PROFILEECOGESTURE = exports.CREATE_NEW_PROFILEECOGESTURE = void 0; +exports.UPDATE_PROFILE_ECOGESTURE = exports.CREATE_NEW_PROFILE_ECOGESTURE = void 0; exports.newProfileEcogestureEntry = newProfileEcogestureEntry; exports.updateProfileEcogesture = updateProfileEcogesture; exports.updateProfileEcogestureSuccess = updateProfileEcogestureSuccess; @@ -22819,20 +22840,20 @@ var _comGrandlyonEcolyoProfileecogesture = __webpack_require__("fGnb"); var _profileEcogesture = _interopRequireDefault(__webpack_require__("4iQs")); -var UPDATE_PROFILEECOGESTURE = 'UPDATE_PROFILEECOGESTURE'; -exports.UPDATE_PROFILEECOGESTURE = UPDATE_PROFILEECOGESTURE; -var CREATE_NEW_PROFILEECOGESTURE = 'CREATE_NEW_PROFILEECOGESTURE'; -exports.CREATE_NEW_PROFILEECOGESTURE = CREATE_NEW_PROFILEECOGESTURE; +// TODO never used ? +var CREATE_NEW_PROFILE_ECOGESTURE = 'CREATE_NEW_PROFILE_ECOGESTURE'; +exports.CREATE_NEW_PROFILE_ECOGESTURE = CREATE_NEW_PROFILE_ECOGESTURE; +var UPDATE_PROFILE_ECOGESTURE = 'UPDATE_PROFILE_ECOGESTURE'; +exports.UPDATE_PROFILE_ECOGESTURE = UPDATE_PROFILE_ECOGESTURE; function updateProfileEcogestureSuccess(updatedProfileEcogesture) { return { - type: UPDATE_PROFILEECOGESTURE, + type: UPDATE_PROFILE_ECOGESTURE, payload: updatedProfileEcogesture }; -} // eslint-disable-next-line @typescript-eslint/no-explicit-any - +} -function updateProfileEcogesture(upd) { +function updateProfileEcogesture(updates) { return /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(dispatch, getState, _ref) { var client, profileEcogestureService, updatedProfileEcogesture; @@ -22843,7 +22864,7 @@ function updateProfileEcogesture(upd) { client = _ref.client; profileEcogestureService = new _profileEcogesture.default(client); _context.next = 4; - return profileEcogestureService.updateProfileEcogesture(upd); + return profileEcogestureService.updateProfileEcogesture(updates); case 4: updatedProfileEcogesture = _context.sent; @@ -22866,7 +22887,7 @@ function updateProfileEcogesture(upd) { }(); } -function newProfileEcogestureEntry(upd) { +function newProfileEcogestureEntry(updates) { return /*#__PURE__*/function () { var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(dispatch, getState, _ref3) { var client, _yield$client$create, newProfileEcogesture; @@ -22877,7 +22898,7 @@ function newProfileEcogestureEntry(upd) { case 0: client = _ref3.client; _context2.next = 3; - return client.create(_comGrandlyonEcolyoProfileecogesture.PROFILEECOGESTURE_DOCTYPE, upd); + return client.create(_comGrandlyonEcolyoProfileecogesture.PROFILEECOGESTURE_DOCTYPE, updates); case 3: _yield$client$create = _context2.sent; @@ -24192,11 +24213,11 @@ exports.getTodayDate = getTodayDate; Object.defineProperty(exports, "__esModule", { value: true }); -exports.UPDATE_TERMS_VALIDATION = exports.UPDATE_SGE_CONNECT = exports.UPDATE_FLUID_CONNECTION = exports.TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION = exports.TOGGLE_CHALLENGE_DUEL_NOTIFICATION = exports.TOGGLE_CHALLENGE_ACTION_NOTIFICATION = exports.TOGGLE_ANALYSIS_NOTIFICATION = exports.SHOW_RELEASE_NOTES = exports.SET_SHOULD_REFRESH_CONSENT = exports.SET_PARTNERS_ISSUE = exports.SET_FLUID_STATUS = exports.SET_CUSTOM_POPUP = exports.CHANGE_SCREEN_TYPE = void 0; +exports.UPDATE_TERMS_VALIDATION = exports.UPDATE_SGE_CONNECT = exports.UPDATE_FLUID_CONNECTION = exports.TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION = exports.TOGGLE_CHALLENGE_DUEL_NOTIFICATION = exports.TOGGLE_CHALLENGE_ACTION_NOTIFICATION = exports.TOGGLE_ANALYSIS_NOTIFICATION = exports.SHOW_RELEASE_NOTES = exports.SET_SHOULD_REFRESH_CONSENT = exports.SET_PARTNERS_INFO = exports.SET_FLUID_STATUS = exports.SET_CUSTOM_POPUP = exports.CHANGE_SCREEN_TYPE = void 0; exports.changeScreenType = changeScreenType; exports.setCustomPopup = setCustomPopup; exports.setFluidStatus = setFluidStatus; -exports.setPartnersIssue = setPartnersIssue; +exports.setPartnersInfo = setPartnersInfo; exports.setShouldRefreshConsent = setShouldRefreshConsent; exports.showReleaseNotes = showReleaseNotes; exports.toggleAnalysisNotification = toggleAnalysisNotification; @@ -24208,30 +24229,30 @@ exports.updateTermValidation = updateTermValidation; exports.updatedFluidConnection = updatedFluidConnection; var CHANGE_SCREEN_TYPE = 'CHANGE_SCREEN_TYPE'; exports.CHANGE_SCREEN_TYPE = CHANGE_SCREEN_TYPE; +var SET_CUSTOM_POPUP = 'SET_CUSTOM_POPUP'; +exports.SET_CUSTOM_POPUP = SET_CUSTOM_POPUP; +var SET_FLUID_STATUS = 'SET_FLUID_STATUS'; +exports.SET_FLUID_STATUS = SET_FLUID_STATUS; +var SET_PARTNERS_INFO = 'SET_PARTNERS_INFO'; +exports.SET_PARTNERS_INFO = SET_PARTNERS_INFO; +var SET_SHOULD_REFRESH_CONSENT = 'SET_SHOULD_REFRESH_CONSENT'; +exports.SET_SHOULD_REFRESH_CONSENT = SET_SHOULD_REFRESH_CONSENT; var SHOW_RELEASE_NOTES = 'SHOW_RELEASE_NOTES'; exports.SHOW_RELEASE_NOTES = SHOW_RELEASE_NOTES; -var TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION = 'TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION'; -exports.TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION = TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION; +var TOGGLE_ANALYSIS_NOTIFICATION = 'TOGGLE_ANALYSIS_NOTIFICATION'; +exports.TOGGLE_ANALYSIS_NOTIFICATION = TOGGLE_ANALYSIS_NOTIFICATION; var TOGGLE_CHALLENGE_ACTION_NOTIFICATION = 'TOGGLE_CHALLENGE_ACTION_NOTIFICATION'; exports.TOGGLE_CHALLENGE_ACTION_NOTIFICATION = TOGGLE_CHALLENGE_ACTION_NOTIFICATION; var TOGGLE_CHALLENGE_DUEL_NOTIFICATION = 'TOGGLE_CHALLENGE_DUEL_NOTIFICATION'; exports.TOGGLE_CHALLENGE_DUEL_NOTIFICATION = TOGGLE_CHALLENGE_DUEL_NOTIFICATION; -var TOGGLE_ANALYSIS_NOTIFICATION = 'TOGGLE_ANALYSIS_NOTIFICATION'; -exports.TOGGLE_ANALYSIS_NOTIFICATION = TOGGLE_ANALYSIS_NOTIFICATION; -var SET_FLUID_STATUS = 'SET_FLUID_STATUS'; -exports.SET_FLUID_STATUS = SET_FLUID_STATUS; +var TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION = 'TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION'; +exports.TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION = TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION; var UPDATE_FLUID_CONNECTION = 'UPDATE_FLUID_CONNECTION'; exports.UPDATE_FLUID_CONNECTION = UPDATE_FLUID_CONNECTION; -var UPDATE_TERMS_VALIDATION = 'UPDATE_TERMS_VALIDATION'; -exports.UPDATE_TERMS_VALIDATION = UPDATE_TERMS_VALIDATION; -var SET_PARTNERS_ISSUE = 'SET_PARTNERS_ISSUE'; -exports.SET_PARTNERS_ISSUE = SET_PARTNERS_ISSUE; -var SET_CUSTOM_POPUP = 'SET_CUSTOM_POPUP'; -exports.SET_CUSTOM_POPUP = SET_CUSTOM_POPUP; -var SET_SHOULD_REFRESH_CONSENT = 'SET_SHOULD_REFRESH_CONSENT'; -exports.SET_SHOULD_REFRESH_CONSENT = SET_SHOULD_REFRESH_CONSENT; var UPDATE_SGE_CONNECT = 'UPDATE_SGE_CONNECT'; exports.UPDATE_SGE_CONNECT = UPDATE_SGE_CONNECT; +var UPDATE_TERMS_VALIDATION = 'UPDATE_TERMS_VALIDATION'; +exports.UPDATE_TERMS_VALIDATION = UPDATE_TERMS_VALIDATION; function changeScreenType(screenType) { return { @@ -24251,31 +24272,31 @@ function showReleaseNotes(show, notes, redirectLink) { }; } -function toggleChallengeExplorationNotification(notif) { +function toggleChallengeExplorationNotification(notification) { return { type: TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION, - payload: notif + payload: notification }; } -function toggleChallengeActionNotification(notif) { +function toggleChallengeActionNotification(notification) { return { type: TOGGLE_CHALLENGE_ACTION_NOTIFICATION, - payload: notif + payload: notification }; } -function toggleChallengeDuelNotification(notif) { +function toggleChallengeDuelNotification(notification) { return { type: TOGGLE_CHALLENGE_DUEL_NOTIFICATION, - payload: notif + payload: notification }; } -function toggleAnalysisNotification(notif) { +function toggleAnalysisNotification(notification) { return { type: TOGGLE_ANALYSIS_NOTIFICATION, - payload: notif + payload: notification }; } @@ -24303,10 +24324,10 @@ function updateTermValidation(termsStatus) { }; } -function setPartnersIssue(openPartnersIssueModal) { +function setPartnersInfo(partnersInfo) { return { - type: SET_PARTNERS_ISSUE, - payload: openPartnersIssueModal + type: SET_PARTNERS_INFO, + payload: partnersInfo }; } @@ -24502,13 +24523,11 @@ var EcogestureFormView = function EcogestureFormView() { }; var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profile; + return state.ecolyo; }), - isProfileTypeCompleted = _useSelector.isProfileTypeCompleted; + isProfileTypeCompleted = _useSelector.profile.isProfileTypeCompleted, + curProfileEcogesture = _useSelector.profileEcogesture; - var curProfileEcogesture = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profileEcogesture; - }); var shouldOpenModal = new URLSearchParams((0, _reactRouterDom.useLocation)().search).get('modal'); var _useState3 = (0, _react.useState)(_ecogestureForm.EcogestureStepForm.HEATING_TYPE), @@ -25191,9 +25210,10 @@ var ProfileTypeFinished = function ProfileTypeFinished(_ref) { var client = (0, _cozyClient.useClient)(); var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.challenge; + return state.ecolyo; }), - currentChallenge = _useSelector.currentChallenge; + currentChallenge = _useSelector.challenge.currentChallenge, + profile = _useSelector.profile; var handleClick = function handleClick() { if ((location === null || location === void 0 ? void 0 : location.pathname) === '/ecogesture-form') { @@ -25212,9 +25232,6 @@ var ProfileTypeFinished = function ProfileTypeFinished(_ref) { _useExploration2 = (0, _slicedToArray2.default)(_useExploration, 2), setValidExploration = _useExploration2[1]; - var profile = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profile; - }); (0, _react2.useEffect)(function () { function checkForExistingProfileType() { return _checkForExistingProfileType.apply(this, arguments); @@ -25980,7 +25997,7 @@ var Header = function Header(_ref) { }, [backFunction, navigate]); var handleClickFeedbacks = function handleClickFeedbacks() { - dispatch((0, _modal.updateModalIsFeedbacksOpen)(true)); + dispatch((0, _modal.openFeedbackModal)(true)); }; (0, _react.useEffect)(function () { @@ -27316,9 +27333,8 @@ var _interopRequireDefault = __webpack_require__("TqRt"); Object.defineProperty(exports, "__esModule", { value: true }); -exports.UPDATE_PROFILE = exports.SET_FIRST_CONNECTION = void 0; +exports.UPDATE_PROFILE = void 0; exports.updateProfile = updateProfile; -exports.updateProfileSuccess = updateProfileSuccess; var _regenerator = _interopRequireDefault(__webpack_require__("o0o1")); @@ -27328,18 +27344,15 @@ var _profile = _interopRequireDefault(__webpack_require__("2l2O")); var UPDATE_PROFILE = 'UPDATE_PROFILE'; exports.UPDATE_PROFILE = UPDATE_PROFILE; -var SET_FIRST_CONNECTION = 'SET_FIRST_CONNECTION'; -exports.SET_FIRST_CONNECTION = SET_FIRST_CONNECTION; function updateProfileSuccess(updatedProfile) { return { type: UPDATE_PROFILE, payload: updatedProfile }; -} // eslint-disable-next-line @typescript-eslint/no-explicit-any - +} -function updateProfile(upd) { +function updateProfile(updates) { return /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(dispatch, getState, _ref) { var client, profileService, updatedProfile; @@ -27350,7 +27363,7 @@ function updateProfile(upd) { client = _ref.client; profileService = new _profile.default(client); _context.next = 4; - return profileService.updateProfile(upd); + return profileService.updateProfile(updates); case 4: updatedProfile = _context.sent; @@ -30013,18 +30026,28 @@ module.exports = JSON.parse("[{\"_id\":\"QUIZ001\",\"questions\":[{\"questionLab Object.defineProperty(exports, "__esModule", { value: true }); -exports.UPDATE_MODAL_ISFEEDBACKSOPEN = void 0; -exports.updateModalIsFeedbacksOpen = updateModalIsFeedbacksOpen; -var UPDATE_MODAL_ISFEEDBACKSOPEN = 'UPDATE_MODAL_ISFEEDBACKSOPEN'; -exports.UPDATE_MODAL_ISFEEDBACKSOPEN = UPDATE_MODAL_ISFEEDBACKSOPEN; +exports.OPEN_PARTNERS_MODAL = exports.OPEN_FEEDBACK_MODAL = void 0; +exports.openFeedbackModal = openFeedbackModal; +exports.openPartnersModal = openPartnersModal; +var OPEN_PARTNERS_MODAL = 'OPEN_PARTNERS_ISSUE'; +exports.OPEN_PARTNERS_MODAL = OPEN_PARTNERS_MODAL; +var OPEN_FEEDBACK_MODAL = 'OPEN_FEEDBACK_MODAL'; +exports.OPEN_FEEDBACK_MODAL = OPEN_FEEDBACK_MODAL; -function updateModalIsFeedbacksOpen(isOpen) { +function openFeedbackModal(isOpen) { return { - type: UPDATE_MODAL_ISFEEDBACKSOPEN, + type: OPEN_FEEDBACK_MODAL, payload: isOpen }; } +function openPartnersModal(openPartnersModal) { + return { + type: OPEN_PARTNERS_MODAL, + payload: openPartnersModal + }; +} + /***/ }), /***/ "lrcb": @@ -31183,15 +31206,12 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var ProfileTypeView = function ProfileTypeView() { - var profile = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profile; - }); - var curProfileType = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profileType; - }); - var curProfileEcogesture = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profileEcogesture; - }); + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo; + }), + profile = _useSelector.profile, + curProfileType = _useSelector.profileType, + curProfileEcogesture = _useSelector.profileEcogesture; var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -33140,14 +33160,10 @@ var ActionList = function ActionList(_ref) { var client = (0, _cozyClient.useClient)(); var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profile; - }), - isProfileTypeCompleted = _useSelector.isProfileTypeCompleted; - - var _useSelector2 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.global; + return state.ecolyo; }), - fluidTypes = _useSelector2.fluidTypes; + fluidTypes = _useSelector.global.fluidTypes, + isProfileTypeCompleted = _useSelector.profile.isProfileTypeCompleted; var _useState = (0, _react.useState)(), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -34483,14 +34499,10 @@ var App = function App(_ref) { var location = (0, _reactRouterDom.useLocation)(); var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.profile; - }), - onboarding = _useSelector.onboarding; - - var _useSelector2 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.global; + return state.ecolyo; }), - termsStatus = _useSelector2.termsStatus; + termsStatus = _useSelector.global.termsStatus, + onboarding = _useSelector.profile.onboarding; (0, _react.useEffect)(function () { tracker === null || tracker === void 0 ? void 0 : tracker.track(location); @@ -35716,12 +35728,8 @@ var ChallengeCardUnlocked = function ChallengeCardUnlocked(_ref) { var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.global; }), - fluidTypes = _useSelector.fluidTypes; - - var _useSelector2 = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.global; - }), - fluidStatus = _useSelector2.fluidStatus; + fluidTypes = _useSelector.fluidTypes, + fluidStatus = _useSelector.fluidStatus; var _useState3 = (0, _react.useState)(_challengeLocked.default), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), @@ -38618,7 +38626,7 @@ var InitializationService = /*#__PURE__*/function () { return _context10.abrupt("return", { monthlyAnalysisDate: actualAnalysisDate, - haveSeenLastAnalysis: profile.isFirstConnection ? true : false + haveSeenLastAnalysis: profile.isFirstConnection }); case 8: @@ -39073,18 +39081,32 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var initialState = { - isFeedbacksOpen: false + isFeedbacksOpen: false, + partnersIssueModal: { + enedis: false, + egl: false, + grdf: false + } }; var modalReducer = function modalReducer() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; var action = arguments.length > 1 ? arguments[1] : undefined; + if (action.payload == undefined) return state; + + var updateState = function updateState(updates) { + return _objectSpread(_objectSpread({}, state), updates); + }; switch (action.type) { - case _modal.UPDATE_MODAL_ISFEEDBACKSOPEN: - var isOpen = action.payload != undefined ? action.payload : state.isFeedbacksOpen; - return _objectSpread(_objectSpread({}, state), {}, { - isFeedbacksOpen: isOpen + case _modal.OPEN_FEEDBACK_MODAL: + return updateState({ + isFeedbacksOpen: action.payload + }); + + case _modal.OPEN_PARTNERS_MODAL: + return updateState({ + partnersIssueModal: action.payload }); default: diff --git a/apple-touch-icon-retina.png b/apple-touch-icon-retina.png deleted file mode 100644 index 659c6a53916e7cdc5647d0b6ca5d0411cfb4fb3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23363 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 diff --git a/cover.png b/cover.png deleted file mode 100644 index ba57a0e8e13a24699c0430771d128f8357636879..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29305 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 diff --git a/index.html b/index.html index 2489c1d02..11d0040a6 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" href="/apple-touch-icon.png"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon-retina.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">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.35f915516b9585855081.js"></script><script src="app/ecolyo.c6f769f46df3b9432805.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">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.35f915516b9585855081.js"></script><script src="app/ecolyo.50adf68b820b9d0f117e.js"></script></div></body></html> \ No newline at end of file diff --git a/serviceWorker.js b/serviceWorker.js index 51dc9b97b..56ef4139d 100644 --- a/serviceWorker.js +++ b/serviceWorker.js @@ -28,6 +28,19 @@ self.addEventListener('fetch', event => { ) }) +let deferredPrompt +self.addEventListener('beforeinstallprompt', e => { + // Prevents the default mini-infobar or install dialog from appearing on mobile + e.preventDefault() + // Save the event because you'll need to trigger it later. + deferredPrompt = e + // Show your customized install prompt for your PWA + // Your own UI doesn't have to be a single element, you + // can have buttons in different locations, or wait to prompt + // as part of a critical journey. + showInAppInstallPromotion() +}) + // Activate the SW self.addEventListener('activate', event => { const cacheWhitelist = [] -- GitLab