55 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
66 */
77
8- import type { UUID } from 'node:crypto' ;
98import { ReactElement , useCallback , useEffect , useMemo } from 'react' ;
109import { useIntl } from 'react-intl' ;
1110import { useDispatch , useSelector } from 'react-redux' ;
1211import { AppState } from 'redux/reducer' ;
1312import { Chip , darken , lighten } from '@mui/material' ;
1413import { type MuiStyles } from '@gridsuite/commons-ui' ;
15- import { setOneBusShortcircuitAnalysisDiagram } from 'redux/actions' ;
14+ import { resetOneBusShortcircuitAnalysisDiagram , setOneBusShortcircuitAnalysisDiagram } from 'redux/actions' ;
1615import { AppDispatch } from 'redux/store' ;
1716import {
1817 isOneBusShortCircuitFailedNotification ,
@@ -40,38 +39,54 @@ type oneBusShortcircuitAnalysisLoader = [ReactElement, boolean, () => void, () =
4039 * A hook that handles the logic behind the diagram one bus shortcircuit analysis loader
4140 *
4241 * @param {string } diagramId - Identifier for the diagram which launched the computation
43- * @param {UUID } nodeId - Identifier for the node which launched the computation
44- * @param rootNetworkUuid
4542 *
4643 * @returns {oneBusShortcircuitAnalysisLoader } array which contains the controls necessary for the one bus
4744 * shortcircuit analysis loader. It also comes with a boolean to check if the loader needs to be displayed
4845 * and the message to display for the UI
4946 */
50- export function useOneBusShortcircuitAnalysisLoader (
51- diagramId : string ,
52- nodeId : UUID ,
53- rootNetworkUuid : UUID
54- ) : oneBusShortcircuitAnalysisLoader {
47+ export function useOneBusShortcircuitAnalysisLoader ( diagramId : string ) : oneBusShortcircuitAnalysisLoader {
48+ const studyUuid = useSelector ( ( state : AppState ) => state . studyUuid ) ;
49+ const currentNode = useSelector ( ( state : AppState ) => state . currentTreeNode ) ;
50+ const rootNetworkUuid = useSelector ( ( state : AppState ) => state . currentRootNetworkUuid ) ;
51+
5552 const studyUpdatedForce = useSelector ( ( state : AppState ) => state . studyUpdated ) ;
5653 const oneBusShortCircuitAnalysisDiagram = useSelector ( ( state : AppState ) => state . oneBusShortCircuitAnalysisDiagram ) ;
5754
5855 const dispatch = useDispatch < AppDispatch > ( ) ;
5956 const intl = useIntl ( ) ;
6057
6158 const displayOneBusShortcircuitAnalysisLoader = useCallback ( ( ) => {
62- dispatch ( setOneBusShortcircuitAnalysisDiagram ( diagramId , nodeId ) ) ;
63- } , [ nodeId , diagramId , dispatch ] ) ;
59+ if ( ! studyUuid || ! currentNode ?. id || ! rootNetworkUuid ) {
60+ return ;
61+ }
62+ dispatch ( setOneBusShortcircuitAnalysisDiagram ( diagramId , studyUuid , rootNetworkUuid , currentNode ?. id ) ) ;
63+ } , [ currentNode ?. id , diagramId , dispatch , rootNetworkUuid , studyUuid ] ) ;
6464
6565 const resetOneBusShortcircuitAnalysisLoader = useCallback ( ( ) => {
66- dispatch ( setOneBusShortcircuitAnalysisDiagram ( null ) ) ;
66+ dispatch ( resetOneBusShortcircuitAnalysisDiagram ( ) ) ;
6767 } , [ dispatch ] ) ;
6868
69- const isDiagramRunningOneBusShortcircuitAnalysis = useMemo (
70- ( ) =>
69+ const isDiagramRunningOneBusShortcircuitAnalysis = useMemo ( ( ) => {
70+ if ( ! studyUuid || ! currentNode ?. id || ! rootNetworkUuid ) {
71+ return false ;
72+ }
73+
74+ return (
7175 diagramId === oneBusShortCircuitAnalysisDiagram ?. diagramId &&
72- nodeId === oneBusShortCircuitAnalysisDiagram ?. nodeId ,
73- [ nodeId , diagramId , oneBusShortCircuitAnalysisDiagram ]
74- ) ;
76+ studyUuid === oneBusShortCircuitAnalysisDiagram ?. studyUuid &&
77+ rootNetworkUuid === oneBusShortCircuitAnalysisDiagram ?. rootNetworkUuid &&
78+ currentNode ?. id === oneBusShortCircuitAnalysisDiagram ?. nodeId
79+ ) ;
80+ } , [
81+ currentNode ?. id ,
82+ diagramId ,
83+ oneBusShortCircuitAnalysisDiagram ?. diagramId ,
84+ oneBusShortCircuitAnalysisDiagram ?. studyUuid ,
85+ oneBusShortCircuitAnalysisDiagram ?. rootNetworkUuid ,
86+ oneBusShortCircuitAnalysisDiagram ?. nodeId ,
87+ rootNetworkUuid ,
88+ studyUuid ,
89+ ] ) ;
7590
7691 const oneBusShortcircuitAnalysisLoaderMessage = useMemo < ReactElement > ( ( ) => {
7792 return (
@@ -90,6 +105,9 @@ export function useOneBusShortcircuitAnalysisLoader(
90105 } , [ intl , isDiagramRunningOneBusShortcircuitAnalysis ] ) ;
91106
92107 useEffect ( ( ) => {
108+ if ( ! studyUuid || ! currentNode ?. id || ! rootNetworkUuid ) {
109+ return ;
110+ }
93111 if (
94112 ( studyUpdatedForce && isOneBusShortCircuitResultNotification ( studyUpdatedForce . eventData ) ) ||
95113 isOneBusShortCircuitFailedNotification ( studyUpdatedForce . eventData )
@@ -99,7 +117,7 @@ export function useOneBusShortcircuitAnalysisLoader(
99117 }
100118 resetOneBusShortcircuitAnalysisLoader ( ) ;
101119 }
102- } , [ resetOneBusShortcircuitAnalysisLoader , studyUpdatedForce , rootNetworkUuid ] ) ;
120+ } , [ resetOneBusShortcircuitAnalysisLoader , studyUpdatedForce , rootNetworkUuid , studyUuid , currentNode ?. id ] ) ;
103121
104122 return [
105123 oneBusShortcircuitAnalysisLoaderMessage ,
0 commit comments