Skip to content

Commit ce22ad0

Browse files
AbdelHedhiliTheMaskedTurtleTristan-WorkGH
authored
Add announcement banner (#2793)
Signed-off-by: Abdelsalem <[email protected]> Co-authored-by: Abdelsalem <[email protected]> Co-authored-by: Joris Mancini <[email protected]> Signed-off-by: Tristan Chuine <[email protected]> Co-authored-by: Tristan Chuine <[email protected]>
1 parent d8e2eb9 commit ce22ad0

File tree

11 files changed

+48
-61
lines changed

11 files changed

+48
-61
lines changed

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"dependencies": {
1212
"@emotion/react": "^11.14.0",
1313
"@emotion/styled": "^11.14.0",
14-
"@gridsuite/commons-ui": "0.99.0",
14+
"@gridsuite/commons-ui": "0.100.0",
1515
"@hello-pangea/dnd": "^18.0.1",
1616
"@hookform/resolvers": "^4.0.0",
1717
"@mui/icons-material": "^5.16.14",

src/components/app-top-bar.jsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
*/
77

88
import { useCallback, useEffect, useState } from 'react';
9-
import { LIGHT_THEME, logout, OverflowableText, TopBar } from '@gridsuite/commons-ui';
9+
import { fetchAppsMetadata, LIGHT_THEME, logout, OverflowableText, TopBar } from '@gridsuite/commons-ui';
1010
import GridStudyLogoLight from '../images/GridStudy_logo_light.svg?react';
1111
import GridStudyLogoDark from '../images/GridStudy_logo_dark.svg?react';
1212
import { Badge, Box, Button, Tab, Tabs, Tooltip } from '@mui/material';
1313
import { Search, Settings } from '@mui/icons-material';
1414
import { FormattedMessage, useIntl } from 'react-intl';
15-
import { PARAM_LANGUAGE, PARAM_THEME, PARAM_USE_NAME, PARAM_DEVELOPER_MODE } from '../utils/config-params';
15+
import { PARAM_DEVELOPER_MODE, PARAM_LANGUAGE, PARAM_THEME, PARAM_USE_NAME } from '../utils/config-params';
1616
import { useDispatch, useSelector } from 'react-redux';
1717
import PropTypes from 'prop-types';
1818
import AppPackage from '../../package.json';
@@ -22,9 +22,7 @@ import { EQUIPMENT_TYPES } from './utils/equipment-types';
2222
import { fetchVersion } from '../services/utils';
2323
import { RunButtonContainer } from './run-button-container';
2424
import { useComputationResultsCount } from '../hooks/use-computation-results-count';
25-
2625
import { TopBarEquipmentSearchDialog } from './top-bar-equipment-seach-dialog/top-bar-equipment-search-dialog';
27-
import { fetchAppsMetadata } from '@gridsuite/commons-ui';
2826
import { ROOT_NODE_LABEL } from '../constants/node.constant';
2927
import { useParameterState } from './dialogs/parameters/use-parameters-state';
3028
import { StudyView } from './utils/utils';

src/components/app.jsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ import {
1414
} from './utils/optional-services';
1515
import { Navigate, Route, Routes, useLocation, useMatch, useNavigate } from 'react-router';
1616
import {
17+
AnnouncementNotification,
1718
AuthenticationRouter,
1819
CardErrorBoundary,
1920
getPreLoginPath,
2021
initializeAuthenticationProd,
21-
useSnackMessage,
22+
NotificationsUrlKeys,
2223
useNotificationsListener,
24+
useSnackMessage,
2325
} from '@gridsuite/commons-ui';
2426
import PageNotFound from './page-not-found';
2527
import { FormattedMessage } from 'react-intl';
@@ -57,7 +59,6 @@ import {
5759
setUpdateNetworkVisualizationParameters,
5860
updateTableColumns,
5961
} from '../redux/actions';
60-
import { NOTIFICATIONS_URL_KEYS } from './utils/notificationsProvider-utils';
6162
import { getNetworkVisualizationParameters, getSpreadsheetConfigCollection } from '../services/study/study-config';
6263
import { StudyView } from './utils/utils';
6364
import { NotificationType } from '../redux/reducer';
@@ -149,7 +150,7 @@ const App = () => {
149150
[snackError, updateParams]
150151
);
151152

152-
useNotificationsListener(NOTIFICATIONS_URL_KEYS.CONFIG, {
153+
useNotificationsListener(NotificationsUrlKeys.CONFIG, {
153154
listenerCallbackMessage: updateConfig,
154155
});
155156

@@ -220,7 +221,7 @@ const App = () => {
220221
[studyUuid, updateSpreadsheetCollectionOnNotification, updateSpreadsheetTabOnNotification]
221222
);
222223

223-
useNotificationsListener(NOTIFICATIONS_URL_KEYS.STUDY, {
224+
useNotificationsListener(NotificationsUrlKeys.STUDY, {
224225
listenerCallbackMessage: onSpreadsheetNotification,
225226
});
226227

@@ -379,6 +380,7 @@ const App = () => {
379380
}}
380381
>
381382
<AppTopBar user={user} onChangeTab={onChangeTab} userManager={userManager} />
383+
<AnnouncementNotification user={user} />
382384
<CardErrorBoundary>
383385
<div
384386
className="singlestretch-parent"

src/components/graph/menus/root-network/use-root-network-notifications.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,15 @@
77

88
import { SetStateAction, useCallback } from 'react';
99
import { useDispatch, useSelector } from 'react-redux';
10-
1110
import {
1211
AppState,
1312
NotificationType,
1413
RootNetworksDeletionStartedEventData,
1514
RootNetworksUpdatedEventData,
1615
} from 'redux/reducer';
17-
18-
import { useNotificationsListener, useSnackMessage } from '@gridsuite/commons-ui';
16+
import { NotificationsUrlKeys, useNotificationsListener, useSnackMessage } from '@gridsuite/commons-ui';
1917
import { fetchRootNetworks } from 'services/root-network';
2018
import { setCurrentRootNetworkUuid, setRootNetworks } from 'redux/actions';
21-
import { NOTIFICATIONS_URL_KEYS } from 'components/utils/notificationsProvider-utils';
2219
import { RootNetworkMetadata } from '../network-modifications/network-modification-menu.type';
2320

2421
type UseRootNetworkNotificationsProps = {
@@ -103,13 +100,13 @@ export const useRootNetworkNotifications = ({ setIsRootNetworksProcessing }: Use
103100
[currentRootNetworkUuid, dispatch, rootNetworks]
104101
);
105102

106-
useNotificationsListener(NOTIFICATIONS_URL_KEYS.STUDY, {
103+
useNotificationsListener(NotificationsUrlKeys.STUDY, {
107104
listenerCallbackMessage: rootNetworkModifiedNotification,
108105
});
109-
useNotificationsListener(NOTIFICATIONS_URL_KEYS.STUDY, {
106+
useNotificationsListener(NotificationsUrlKeys.STUDY, {
110107
listenerCallbackMessage: rootNetworksUpdateFailedNotification,
111108
});
112-
useNotificationsListener(NOTIFICATIONS_URL_KEYS.STUDY, {
109+
useNotificationsListener(NotificationsUrlKeys.STUDY, {
113110
listenerCallbackMessage: rootNetworkDeletionStartedNotification,
114111
});
115112
};

src/components/network/network-map-tab.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,13 @@ import VoltageLevelChoice from '../voltage-level-choice';
3131
import NominalVoltageFilter, { type NominalVoltageFilterProps } from './nominal-voltage-filter';
3232
import { useDispatch, useSelector } from 'react-redux';
3333
import { PARAM_USE_NAME } from '../../utils/config-params';
34-
import { type Equipment, EquipmentType, useNotificationsListener, useSnackMessage } from '@gridsuite/commons-ui';
34+
import {
35+
type Equipment,
36+
EquipmentType,
37+
NotificationsUrlKeys,
38+
useNotificationsListener,
39+
useSnackMessage,
40+
} from '@gridsuite/commons-ui';
3541
import { isNodeBuilt, isNodeRenamed, isSameNodeAndBuilt } from '../graph/util/model-functions';
3642
import { resetMapEquipment, setMapDataLoading, setReloadMapNeeded } from '../../redux/actions';
3743
import GSMapEquipments from './gs-map-equipments';
@@ -52,7 +58,6 @@ import { ROOT_NODE_LABEL } from '../../constants/node.constant';
5258
import { UUID } from 'crypto';
5359
import { AppState, LoadflowResultEventData, NotificationType, RootNetworksUpdatedEventData } from 'redux/reducer';
5460
import { CurrentTreeNode } from 'components/graph/tree-node.type';
55-
import { NOTIFICATIONS_URL_KEYS } from 'components/utils/notificationsProvider-utils';
5661
import { isReactFlowRootNodeData } from 'redux/utils';
5762

5863
const INITIAL_POSITION = [0, 0] as const;
@@ -855,10 +860,10 @@ export const NetworkMapTab = ({
855860
[currentRootNetworkUuid, dispatch, isInitialized]
856861
);
857862

858-
useNotificationsListener(NOTIFICATIONS_URL_KEYS.STUDY, {
863+
useNotificationsListener(NotificationsUrlKeys.STUDY, {
859864
listenerCallbackMessage: loadflowResultNotification,
860865
});
861-
useNotificationsListener(NOTIFICATIONS_URL_KEYS.STUDY, {
866+
useNotificationsListener(NotificationsUrlKeys.STUDY, {
862867
listenerCallbackMessage: rootNetworkModifiedNotification,
863868
});
864869

src/components/spreadsheet-view/hooks/use-node-aliases.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@ import { AppState, NotificationType } from '../../../redux/reducer';
99
import { useCallback, useEffect, useMemo, useState } from 'react';
1010
import { useDispatch, useSelector } from 'react-redux';
1111
import { getNodeAliases, updateNodeAliases as _updateNodeAlias } from '../../../services/study/node-alias';
12-
import { useNotificationsListener, useSnackMessage } from '@gridsuite/commons-ui';
12+
import { NotificationsUrlKeys, useNotificationsListener, useSnackMessage } from '@gridsuite/commons-ui';
1313
import { NodeAlias } from '../types/node-alias.type';
1414
import { UUID } from 'crypto';
1515
import { deletedOrRenamedNodes } from 'redux/actions';
16-
import { NOTIFICATIONS_URL_KEYS } from '../../utils/notificationsProvider-utils';
1716

1817
// NodeAlias may have invalid id/name, in error cases
1918
export const validAlias = (alias: NodeAlias) => alias.id != null && alias.name != null;
@@ -86,7 +85,7 @@ export const useNodeAliases = () => {
8685
[fetchNodeAliases, studyUuid]
8786
);
8887

89-
useNotificationsListener(NOTIFICATIONS_URL_KEYS.STUDY, {
88+
useNotificationsListener(NotificationsUrlKeys.STUDY, {
9089
listenerCallbackMessage: listenerAliasesUpdated,
9190
});
9291

src/components/spreadsheet-view/spreadsheet/spreadsheet-content/hooks/use-spreadsheet-equipments.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@
55
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
66
*/
77

8-
import { Identifiable, useNotificationsListener } from '@gridsuite/commons-ui';
9-
import { UUID } from 'crypto';
8+
import { type Identifiable, NotificationsUrlKeys, useNotificationsListener } from '@gridsuite/commons-ui';
9+
import type { UUID } from 'crypto';
1010
import { useCallback, useEffect, useMemo, useState } from 'react';
1111
import { useDispatch, useSelector } from 'react-redux';
1212
import { deleteEquipments, EquipmentToDelete, removeNodeData, updateEquipments } from 'redux/actions';
13-
import { AppState, EquipmentUpdateType, NotificationType } from 'redux/reducer';
14-
import { SpreadsheetEquipmentType } from '../../../types/spreadsheet.type';
13+
import { type AppState, EquipmentUpdateType, NotificationType } from 'redux/reducer';
14+
import type { SpreadsheetEquipmentType } from '../../../types/spreadsheet.type';
1515
import { fetchAllEquipments } from 'services/study/network-map';
16-
import { NOTIFICATIONS_URL_KEYS } from '../../../../utils/notificationsProvider-utils';
17-
import { NodeAlias } from '../../../types/node-alias.type';
16+
import type { NodeAlias } from '../../../types/node-alias.type';
1817
import { isStatusBuilt } from '../../../../graph/util/model-functions';
1918
import { useFetchEquipment } from '../../../hooks/use-fetch-equipment';
2019
import { NodeType } from '../../../../graph/tree-node.type';
@@ -253,7 +252,7 @@ export const useSpreadsheetEquipments = (
253252
[currentNode?.id, currentRootNetworkUuid, studyUuid, updateEquipmentsLocal]
254253
);
255254

256-
useNotificationsListener(NOTIFICATIONS_URL_KEYS.STUDY, {
255+
useNotificationsListener(NotificationsUrlKeys.STUDY, {
257256
listenerCallbackMessage: listenerUpdateEquipmentsLocal,
258257
});
259258

src/components/study-container.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import { fetchRootNetworks } from 'services/root-network';
2929
import WaitingLoader from './utils/waiting-loader';
3030
import {
3131
fetchDirectoryElementPath,
32+
NotificationsUrlKeys,
3233
useIntlRef,
3334
useNotificationsListener,
3435
usePrevious,
@@ -49,7 +50,6 @@ import { HttpStatusCode } from 'utils/http-status-code';
4950
import { RootNetworkIndexationStatus } from 'redux/reducer';
5051
import { NodeType } from './graph/tree-node.type';
5152
import { UPDATE_TYPE_HEADER } from './use-node-data';
52-
import { NOTIFICATIONS_URL_KEYS } from './utils/notificationsProvider-utils';
5353

5454
function useStudy(studyUuidRequest) {
5555
const dispatch = useDispatch();
@@ -286,7 +286,7 @@ export function StudyContainer({ view, onChangeTab }) {
286286
[dispatch, displayErrorNotifications, sendAlert]
287287
);
288288

289-
useNotificationsListener(NOTIFICATIONS_URL_KEYS.STUDY, { listenerCallbackMessage: handleStudyUpdate });
289+
useNotificationsListener(NotificationsUrlKeys.STUDY, { listenerCallbackMessage: handleStudyUpdate });
290290

291291
const fetchStudyPath = useCallback(() => {
292292
fetchDirectoryElementPath(studyUuid)
@@ -320,7 +320,7 @@ export function StudyContainer({ view, onChangeTab }) {
320320
}, []);
321321

322322
//Study deletion notification
323-
useNotificationsListener(NOTIFICATIONS_URL_KEYS.DIRECTORY_DELETE_STUDY, {
323+
useNotificationsListener(NotificationsUrlKeys.DIRECTORY_DELETE_STUDY, {
324324
listenerCallbackMessage: closeWindow,
325325
});
326326

@@ -344,7 +344,7 @@ export function StudyContainer({ view, onChangeTab }) {
344344
[dispatch, fetchStudyPath]
345345
);
346346

347-
useNotificationsListener(NOTIFICATIONS_URL_KEYS.DIRECTORY, {
347+
useNotificationsListener(NotificationsUrlKeys.DIRECTORY, {
348348
listenerCallbackMessage: onStudyUpdated,
349349
});
350350

src/components/utils/notificationsProvider-utils.ts

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/hooks/use-notifications-url-generator.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@
55
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
66
*/
77
import {
8-
NOTIFICATIONS_URL_KEYS,
8+
NotificationsUrlKeys,
99
PREFIX_CONFIG_NOTIFICATION_WS,
1010
PREFIX_DIRECTORY_NOTIFICATION_WS,
1111
PREFIX_STUDY_NOTIFICATION_WS,
12-
} from 'components/utils/notificationsProvider-utils';
12+
} from '@gridsuite/commons-ui';
1313
import { useMemo } from 'react';
1414
import { useSelector } from 'react-redux';
1515
import { type AppState } from 'redux/reducer';
1616
import { getUrlWithToken, getWsBase } from 'services/utils';
1717
import { APP_NAME } from 'utils/config-params';
1818

19-
const useNotificationsUrlGenerator = (): Record<NOTIFICATIONS_URL_KEYS, string | undefined> => {
19+
const useNotificationsUrlGenerator = (): Partial<Record<NotificationsUrlKeys, string | undefined>> => {
2020
// The websocket API doesn't allow relative urls
2121
const wsBase = getWsBase();
2222
const tokenId = useSelector((state: AppState) => state.user?.id_token);
@@ -26,28 +26,31 @@ const useNotificationsUrlGenerator = (): Record<NOTIFICATIONS_URL_KEYS, string |
2626
// it will be used to register listeners as soon as possible.
2727
return useMemo(
2828
() => ({
29-
[NOTIFICATIONS_URL_KEYS.CONFIG]: tokenId
29+
[NotificationsUrlKeys.CONFIG]: tokenId
3030
? getUrlWithToken(
3131
`${wsBase}${PREFIX_CONFIG_NOTIFICATION_WS}/notify?${new URLSearchParams({
3232
appName: APP_NAME,
3333
})}`
3434
)
3535
: undefined,
36-
[NOTIFICATIONS_URL_KEYS.STUDY]:
36+
[NotificationsUrlKeys.GLOBAL_CONFIG]: tokenId
37+
? getUrlWithToken(`${wsBase}${PREFIX_CONFIG_NOTIFICATION_WS}/global`)
38+
: undefined,
39+
[NotificationsUrlKeys.STUDY]:
3740
tokenId && studyUuid
3841
? getUrlWithToken(
3942
`${wsBase}${PREFIX_STUDY_NOTIFICATION_WS}/notify?studyUuid=${encodeURIComponent(studyUuid)}`
4043
)
4144
: undefined,
42-
[NOTIFICATIONS_URL_KEYS.DIRECTORY_DELETE_STUDY]:
45+
[NotificationsUrlKeys.DIRECTORY_DELETE_STUDY]:
4346
tokenId && studyUuid
4447
? getUrlWithToken(
4548
`${wsBase}${PREFIX_DIRECTORY_NOTIFICATION_WS}/notify?updateType=deleteElement&elementUuid=${encodeURIComponent(
4649
studyUuid
4750
)}`
4851
)
4952
: undefined,
50-
[NOTIFICATIONS_URL_KEYS.DIRECTORY]: tokenId
53+
[NotificationsUrlKeys.DIRECTORY]: tokenId
5154
? getUrlWithToken(`${wsBase}${PREFIX_DIRECTORY_NOTIFICATION_WS}/notify?updateType=directories`)
5255
: undefined,
5356
}),

0 commit comments

Comments
 (0)