From 81034aa4786e6e796778a50b0c3566e394860724 Mon Sep 17 00:00:00 2001 From: Tristan Chuine Date: Thu, 13 Jun 2024 21:54:52 +0200 Subject: [PATCH 1/2] Remove old authentication flag and update fn call --- package.json | 2 +- src/components/app.js | 58 +++++++++++++++++++------------------------ src/utils/rest-api.js | 26 ++----------------- 3 files changed, 29 insertions(+), 57 deletions(-) diff --git a/package.json b/package.json index ec9fe34..05581a5 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "dependencies": { "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.5", - "@gridsuite/commons-ui": "0.53.0", + "@gridsuite/commons-ui": "0.60.0", "@mui/icons-material": "^5.15.14", "@mui/lab": "5.0.0-alpha.169", "@mui/material": "^5.15.14", diff --git a/src/components/app.js b/src/components/app.js index 2de8416..e3727cd 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -5,54 +5,47 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import React, { useEffect, useState, useCallback } from 'react'; - +import React, { useCallback, useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; - import { Navigate, - Routes, Route, - useNavigate, + Routes, useLocation, - useParams, useMatch, + useNavigate, + useParams, } from 'react-router-dom'; - import { + selectComputedLanguage, + selectLanguage, selectTheme, selectTimelineDiagonalLabels, - selectLanguage, - selectComputedLanguage, } from '../redux/actions'; - import { AuthenticationRouter, CardErrorBoundary, getPreLoginPath, initializeAuthenticationProd, + useSnackMessage, } from '@gridsuite/commons-ui'; import { FormattedMessage } from 'react-intl'; - import Process from './process'; - import { connectNotificationsWsUpdateConfig, - fetchAuthorizationCodeFlowFeatureFlag, fetchConfigParameter, fetchConfigParameters, + fetchIdpSettings, fetchValidateUser, } from '../utils/rest-api'; - import { APP_NAME, COMMON_APP_NAME, - PARAM_THEME, PARAM_LANGUAGE, + PARAM_THEME, PARAM_TIMELINE_DIAGONAL_LABELS, } from '../utils/config-params'; import { getComputedLanguage } from '../utils/language'; -import { useSnackMessage } from '@gridsuite/commons-ui'; import AppTopBar, { PREFIX_URL_PROCESSES } from './app-top-bar'; const noUserManager = { instance: null, error: null }; @@ -65,6 +58,7 @@ const ProcessRouteElement = () => { function getProcessIndex(processName) { return configs.findIndex((c) => c.process === processName); } + let index = getProcessIndex(processName); return index !== -1 ? ( @@ -148,23 +142,23 @@ const App = () => { }); useEffect(() => { - fetchAuthorizationCodeFlowFeatureFlag() - .then((authorizationCodeFlowEnabled) => { - return initializeAuthenticationProd( - dispatch, - initialMatchSilentRenewCallbackUrl != null, - fetch('idpSettings.json'), - fetchValidateUser, - authorizationCodeFlowEnabled, - initialMatchSigninCallbackUrl != null - ); - }) - .then((userManager) => { - setUserManager({ instance: userManager, error: null }); - }) - .catch(function (error) { + // need subfunction when async as suggested by rule react-hooks/exhaustive-deps + (async function initializeAuthentication() { + try { + setUserManager({ + instance: await initializeAuthenticationProd( + dispatch, + initialMatchSilentRenewCallbackUrl != null, + fetchIdpSettings, + fetchValidateUser, + initialMatchSigninCallbackUrl != null + ), + error: null, + }); + } catch (error) { setUserManager({ instance: null, error: error.message }); - }); + } + })(); // Note: initialMatchSilentRenewCallbackUrl and dispatch don't change }, [ initialMatchSilentRenewCallbackUrl, diff --git a/src/utils/rest-api.js b/src/utils/rest-api.js index 5e31f35..20b7748 100644 --- a/src/utils/rest-api.js +++ b/src/utils/rest-api.js @@ -239,30 +239,8 @@ function fetchEnv() { return fetch('env.json').then((res) => res.json()); } -export function fetchAuthorizationCodeFlowFeatureFlag() { - console.info(`Fetching authorization code flow feature flag...`); - return fetchEnv() - .then((res) => - fetch(res.appsMetadataServerUrl + '/authentication.json') - ) - .then((res) => res.json()) - .then((res) => { - console.log( - `Authorization code flow is ${ - res.authorizationCodeFlowFeatureFlag - ? 'enabled' - : 'disabled' - }` - ); - return res.authorizationCodeFlowFeatureFlag; - }) - .catch((error) => { - console.error(error); - console.warn( - `Something wrong happened when retrieving authentication.json: authorization code flow will be disabled` - ); - return false; - }); +export function fetchIdpSettings() { + return fetch('idpSettings.json').then((res) => res.json()); } export function fetchAppsAndUrls() { From 5a7f6c4d2198e3a3a8cbc6a413c2edf8abfc5ce2 Mon Sep 17 00:00:00 2001 From: Tristan Chuine Date: Mon, 8 Jul 2024 10:55:00 +0200 Subject: [PATCH 2/2] update --- package-lock.json | 226 +++++++++++++++++++++++++++++++++++++++++----- package.json | 2 +- 2 files changed, 203 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 317c0cc..d16fdb0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.5", - "@gridsuite/commons-ui": "0.53.0", + "@gridsuite/commons-ui": "0.62.0", "@mui/icons-material": "^5.15.14", "@mui/lab": "5.0.0-alpha.169", "@mui/material": "^5.15.14", @@ -2754,18 +2754,23 @@ } }, "node_modules/@gridsuite/commons-ui": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@gridsuite/commons-ui/-/commons-ui-0.53.0.tgz", - "integrity": "sha512-//BB1tsBxtNHINgVc3Wp3GsElr4ne2OiqFwL1Ykuf8Oq3xNyVMdds28hAKcnDrcKri+B+bsniDa3UjVvbsemUA==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@gridsuite/commons-ui/-/commons-ui-0.62.0.tgz", + "integrity": "sha512-eyslaXFRvLQWlLDqiF6V/hjTtAcwcaLkybPvWK1TwFJk2BxrU8zIDnXdulaRQx5SeVmeaKO+a//saFxclmJ4HQ==", "dependencies": { + "@react-querybuilder/dnd": "^7.2.0", + "@react-querybuilder/material": "^7.2.0", "autosuggest-highlight": "^3.3.4", "clsx": "^2.1.0", "jwt-decode": "^4.0.0", + "localized-countries": "^2.0.0", "memoize-one": "^6.0.0", "oidc-client": "^1.11.5", "prop-types": "^15.8.1", "react-csv-downloader": "^3.1.0", - "react-request-fullscreen": "^1.1.2", + "react-dnd": "^16.0.1", + "react-dnd-html5-backend": "^16.0.1", + "react-querybuilder": "^7.2.0", "react-virtualized": "^9.22.5", "uuid": "^9.0.1" }, @@ -2780,11 +2785,14 @@ "@mui/icons-material": "^5.15.14", "@mui/lab": "5.0.0-alpha.169", "@mui/material": "^5.15.14", + "ag-grid-community": "^31.0.0", + "ag-grid-react": "^31.2.0", "notistack": "^3.0.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.51.2", "react-intl": "^6.6.4", + "react-papaparse": "^4.1.0", "react-router-dom": "^6.22.3", "yup": "^1.4.0" } @@ -4231,15 +4239,54 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@react-dnd/asap": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-5.0.2.tgz", + "integrity": "sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==" + }, + "node_modules/@react-dnd/invariant": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-4.0.2.tgz", + "integrity": "sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==" + }, + "node_modules/@react-dnd/shallowequal": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-4.0.2.tgz", + "integrity": "sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==" + }, + "node_modules/@react-querybuilder/dnd": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@react-querybuilder/dnd/-/dnd-7.5.2.tgz", + "integrity": "sha512-7rMeZ6gFQow2jpz0exMQSq/f3MZEL5OuiWW6YOkDuFfJWPR7ijXV6Cz0x7TiFS7jbTD5Axr44u7nFCWx06hZeg==", + "peerDependencies": { + "react": ">=18", + "react-dnd": ">=14.0.0", + "react-dnd-html5-backend": ">=14.0.0", + "react-querybuilder": "7.5.0" + } + }, + "node_modules/@react-querybuilder/material": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@react-querybuilder/material/-/material-7.5.2.tgz", + "integrity": "sha512-wWjwKjaD5LIX9Lta3QE/smd9lYEWzIAR7A93XyHHwv8BtP1EQoZgjKogNCSuQZhfkrTT5U1n9g4uORCUk7Z9ZQ==", + "peerDependencies": { + "@emotion/react": "^11", + "@emotion/styled": "^11", + "@mui/icons-material": ">=5", + "@mui/material": ">=5", + "react": ">=18", + "react-querybuilder": "7.5.0" + } + }, "node_modules/@reduxjs/toolkit": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.2.3.tgz", - "integrity": "sha512-76dll9EnJXg4EVcI5YNxZA/9hSAmZsFqzMmNRHvIlzw2WS/twfcVX3ysYrWGJMClwEmChQFC4yRq74tn6fdzRA==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.2.6.tgz", + "integrity": "sha512-kH0r495c5z1t0g796eDQAkYbEQ3a1OLYN9o8jQQVZyKyw367pfRGS+qZLkHYvFHiUUdafpoSlQ2QYObIApjPWA==", "dependencies": { "immer": "^10.0.3", "redux": "^5.0.1", "redux-thunk": "^3.1.0", - "reselect": "^5.0.1" + "reselect": "^5.1.0" }, "peerDependencies": { "react": "^16.9.0 || ^17.0.0 || ^18", @@ -4857,6 +4904,15 @@ "@types/node": "*" } }, + "node_modules/@types/papaparse": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.14.tgz", + "integrity": "sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", @@ -5670,6 +5726,26 @@ "node": ">=8.9" } }, + "node_modules/ag-grid-community": { + "version": "31.3.2", + "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-31.3.2.tgz", + "integrity": "sha512-GxqFRD0OcjaVRE1gwLgoP0oERNPH8Lk8wKJ1txulsxysEQ5dZWHhiIoXXSiHjvOCVMkK/F5qzY6HNrn6VeDMTQ==", + "peer": true + }, + "node_modules/ag-grid-react": { + "version": "31.3.2", + "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-31.3.2.tgz", + "integrity": "sha512-SFHN05bsXp901rIT00Fa6iQLCtyavoJiKaXEDUtAU5LMu+GTkjs/FPQBQ8754omgdDFr4NsS3Ri6QbqBne3rug==", + "peer": true, + "dependencies": { + "ag-grid-community": "31.3.2", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^16.3.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.3.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -7912,6 +7988,24 @@ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, + "node_modules/dnd-core": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-16.0.1.tgz", + "integrity": "sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==", + "dependencies": { + "@react-dnd/asap": "^5.0.1", + "@react-dnd/invariant": "^4.0.1", + "redux": "^4.2.0" + } + }, + "node_modules/dnd-core/node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -10436,9 +10530,9 @@ } }, "node_modules/immer": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.4.tgz", - "integrity": "sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -13475,6 +13569,11 @@ "node": ">=8.9.0" } }, + "node_modules/localized-countries": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/localized-countries/-/localized-countries-2.0.0.tgz", + "integrity": "sha512-17CwJ/oetI5cB6KmPa+Cxw/8vunawUouVv5MFxYqsVzryXeR5u/MF32m3SBaHxP4EqYPOePV+3jx7xxYZnAJpQ==" + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -13984,6 +14083,14 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/numeric-quantity": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/numeric-quantity/-/numeric-quantity-2.0.1.tgz", + "integrity": "sha512-+Bt2X6YxM5bg8XIBl76NVeG2eL0Y5VQRoyz6GLYrZXW/TDh7We+tGeX4/WZWhaVGOg5ZjNBEOZt9a86slMhOJA==", + "engines": { + "node": ">=16" + } + }, "node_modules/nwsapi": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", @@ -14310,6 +14417,12 @@ "node": ">=6" } }, + "node_modules/papaparse": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz", + "integrity": "sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==", + "peer": true + }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -16261,6 +16374,43 @@ "node": ">=8" } }, + "node_modules/react-dnd": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-16.0.1.tgz", + "integrity": "sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==", + "dependencies": { + "@react-dnd/invariant": "^4.0.1", + "@react-dnd/shallowequal": "^4.0.1", + "dnd-core": "^16.0.1", + "fast-deep-equal": "^3.1.3", + "hoist-non-react-statics": "^3.3.2" + }, + "peerDependencies": { + "@types/hoist-non-react-statics": ">= 3.3.1", + "@types/node": ">= 12", + "@types/react": ">= 16", + "react": ">= 16.14" + }, + "peerDependenciesMeta": { + "@types/hoist-non-react-statics": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-dnd-html5-backend": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-16.0.1.tgz", + "integrity": "sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==", + "dependencies": { + "dnd-core": "^16.0.1" + } + }, "node_modules/react-dom": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", @@ -16329,10 +16479,47 @@ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, + "node_modules/react-papaparse": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/react-papaparse/-/react-papaparse-4.4.0.tgz", + "integrity": "sha512-xTEwHZYJ+1dh9mQDQjjwJXmWyX20DdZ52u+ddw75V+Xm5qsjXSvWmC7c8K82vRwMjKAOH2S9uFyGpHEyEztkUQ==", + "peer": true, + "dependencies": { + "@types/papaparse": "^5.3.9", + "papaparse": "^5.4.1" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/react-querybuilder": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/react-querybuilder/-/react-querybuilder-7.5.0.tgz", + "integrity": "sha512-tWrwLf2dPkI1TYluW6Oy/Tif/Z0X8OBoDXkh2C/oloAItPJEmKAcInuIYOlEKDVK6KM6lHJsGNBmApuMWY5c/g==", + "dependencies": { + "@reduxjs/toolkit": "^2.2.5", + "clsx": "^2.1.1", + "immer": "^10.1.1", + "numeric-quantity": "^2.0.1", + "react-redux": "^9.1.2" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/react-querybuilder/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, "node_modules/react-redux": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.0.tgz", - "integrity": "sha512-6qoDzIO+gbrza8h3hjMA9aq4nwVFCKFtY2iLxCtVT38Swyy2C/dJCGBXHeHLtx6qlg/8qzc2MrhOeduf5K32wQ==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", "dependencies": { "@types/use-sync-external-store": "^0.0.3", "use-sync-external-store": "^1.0.0" @@ -16340,16 +16527,12 @@ "peerDependencies": { "@types/react": "^18.2.25", "react": "^18.0", - "react-native": ">=0.69", "redux": "^5.0.0" }, "peerDependenciesMeta": { "@types/react": { "optional": true }, - "react-native": { - "optional": true - }, "redux": { "optional": true } @@ -16363,11 +16546,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-request-fullscreen": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-request-fullscreen/-/react-request-fullscreen-1.1.2.tgz", - "integrity": "sha512-WsQ/htbZag9qNfWPb2fEm0if+oUsRK3rTKKJ007n64Mk0PY82gAbLwVKZ+7OmzkHm6f/PSkxf8pdYlzBUmXR/Q==" - }, "node_modules/react-router": { "version": "6.22.3", "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", diff --git a/package.json b/package.json index 05581a5..67020e0 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "dependencies": { "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.5", - "@gridsuite/commons-ui": "0.60.0", + "@gridsuite/commons-ui": "0.62.0", "@mui/icons-material": "^5.15.14", "@mui/lab": "5.0.0-alpha.169", "@mui/material": "^5.15.14",