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 330b6544a4714dd65ba17cefc36dd3cb894f3e22..23dba32707a84f96a3192f607428aedd88cde7b5 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.f2453cca7662654fa54a.js b/3/ecolyo.9343f3201d05ad1a3cf3.js similarity index 99% rename from 3/ecolyo.f2453cca7662654fa54a.js rename to 3/ecolyo.9343f3201d05ad1a3cf3.js index 02ff1eaf467e19d0807b9995457bd96f281717d8..c19a010bba0c097266b395435960dffaf170e1a7 100644 --- a/3/ecolyo.f2453cca7662654fa54a.js +++ b/3/ecolyo.9343f3201d05ad1a3cf3.js @@ -2025,11 +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, - partnersInfo = _useSelector.partnersInfo; + 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), @@ -2066,11 +2068,6 @@ 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]); @@ -2959,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: [], @@ -4235,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; @@ -5629,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 b0b9e8790bdfa8891b171b9d62b71532546e74b7..d6c6faec1ef342819a03e4d941c53dd0475fa223 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 872207057909d60e0deea3f63296943de5aa582e..886876155ac40e9b5720b2f96f34eff1770ce4bd 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.c9b056bd80b262be9598.js similarity index 99% rename from 6/ecolyo.8a0fb54d4ad7a438bb12.js rename to 6/ecolyo.c9b056bd80b262be9598.js index e60253ab7158ff36d9e17e2ee612eb158cfde13a..ad465281e84a2348d62f3199576f101f76853b77 100644 --- a/6/ecolyo.8a0fb54d4ad7a438bb12.js +++ b/6/ecolyo.c9b056bd80b262be9598.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; @@ -2109,7 +2106,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.ae4d817db51322a0a71b.js b/app/ecolyo.838f0e88d174c23c5f6e.js similarity index 99% rename from app/ecolyo.ae4d817db51322a0a71b.js rename to app/ecolyo.838f0e88d174c23c5f6e.js index 8650bffa5453c3ef270418aad96b1e0385acf3e6..7153816a7c116df0706bea58726866add4f14ebd 100644 --- a/app/ecolyo.ae4d817db51322a0a71b.js +++ b/app/ecolyo.838f0e88d174c23c5f6e.js @@ -64,7 +64,7 @@ /******/ /******/ // script path function /******/ function jsonpScriptSrc(chunkId) { -/******/ return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"2":"428a0f6e105059ec41cb","3":"f2453cca7662654fa54a","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":"c9b056bd80b262be9598","7":"403585665c5e67c3d156","8":"8763ca2635d712139819","9":"9ad8f654859d6a5af353"}[chunkId] + ".js" /******/ } /******/ /******/ // The require function @@ -3705,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; @@ -4632,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), @@ -5397,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)(); @@ -5430,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; @@ -5596,7 +5592,7 @@ var DuelOngoing = function DuelOngoing(_ref) { dataloads = _context4.sent; if (subscribed) { - setfinishedDataLoad(dataloads); + setFinishedDataLoad(dataloads); } case 5: @@ -9965,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")); @@ -9993,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) { @@ -10210,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) { @@ -14588,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: @@ -18457,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; @@ -18484,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); @@ -18510,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); @@ -18529,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: @@ -18739,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; @@ -18753,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; @@ -18774,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; @@ -18788,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; @@ -19424,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 { @@ -20031,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 () { @@ -22329,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_INFO: - return action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ partnersInfo: action.payload - }) : state; + }); 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; @@ -22835,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; @@ -22848,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; @@ -22872,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; @@ -22895,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; @@ -22906,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; @@ -24280,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 }; } @@ -24531,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), @@ -25220,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') { @@ -25241,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); @@ -26009,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 () { @@ -27345,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")); @@ -27357,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; @@ -27379,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; @@ -30042,17 +30026,17 @@ module.exports = JSON.parse("[{\"_id\":\"QUIZ001\",\"questions\":[{\"questionLab Object.defineProperty(exports, "__esModule", { value: true }); -exports.UPDATE_MODAL_ISFEEDBACKSOPEN = exports.OPEN_PARTNERS_MODAL = void 0; +exports.OPEN_PARTNERS_MODAL = exports.OPEN_FEEDBACK_MODAL = void 0; +exports.openFeedbackModal = openFeedbackModal; exports.openPartnersModal = openPartnersModal; -exports.updateModalIsFeedbacksOpen = updateModalIsFeedbacksOpen; -var UPDATE_MODAL_ISFEEDBACKSOPEN = 'UPDATE_MODAL_ISFEEDBACKSOPEN'; -exports.UPDATE_MODAL_ISFEEDBACKSOPEN = UPDATE_MODAL_ISFEEDBACKSOPEN; -var OPEN_PARTNERS_MODAL = 'SET_PARTNERS_ISSUE'; +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 }; } @@ -31222,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), @@ -33179,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), @@ -34522,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); @@ -35755,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), @@ -38657,7 +38626,7 @@ var InitializationService = /*#__PURE__*/function () { return _context10.abrupt("return", { monthlyAnalysisDate: actualAnalysisDate, - haveSeenLastAnalysis: profile.isFirstConnection ? true : false + haveSeenLastAnalysis: profile.isFirstConnection }); case 8: @@ -39123,18 +39092,22 @@ var initialState = { 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 action.payload != undefined ? _objectSpread(_objectSpread({}, state), {}, { + return updateState({ partnersIssueModal: action.payload - }) : state; + }); default: return state; diff --git a/index.html b/index.html index 9451d7428a2f2053b1710ed0d012ae8a42bf81fe..5bc9fac4e2f9989b627ad074e4e50ae2696314a4 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">{{.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.ae4d817db51322a0a71b.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.838f0e88d174c23c5f6e.js"></script></div></body></html> \ No newline at end of file