1
1
import React , { useContext , useEffect , useMemo , useState } from 'react' ;
2
2
import PropTypes from 'prop-types' ;
3
3
4
- import {
5
- BlockText ,
6
- Button ,
7
- HeadingText ,
8
- Select ,
9
- SelectItem ,
10
- TextField ,
11
- } from 'nr1' ;
4
+ import { BlockText , Button , HeadingText , TextField } from 'nr1' ;
12
5
13
6
import Modal from '../modal' ;
14
- import { AppContext , FlowContext } from '../../contexts' ;
15
- import { REFRESH_INTERVALS } from '../../constants' ;
7
+ import { AppContext } from '../../contexts' ;
16
8
import { validRefreshInterval } from '../../utils' ;
9
+ import { REFRESH_INTERVALS } from '../../constants' ;
10
+
11
+ const DEFAULT_REFRESH_INTERVAL_VALUE = REFRESH_INTERVALS [ 0 ] . value ;
17
12
18
13
const EditFlowSettingsModal = ( {
19
- onUpdate = ( ) => null ,
20
- onDeleteFlow = ( ) => null ,
14
+ flow,
15
+ onUpdate,
16
+ onDeleteFlow,
21
17
editFlowSettings = false ,
22
- setEditFlowSettings = ( ) => null ,
18
+ setEditFlowSettings,
23
19
} ) => {
24
- const flow = useContext ( FlowContext ) ;
25
20
const { account, accounts = [ ] } = useContext ( AppContext ) ;
21
+ const [ updatedName , setupdatedName ] = useState ( '' ) ;
26
22
const [ updatedRefreshInterval , setupdatedRefreshInterval ] = useState (
27
- REFRESH_INTERVALS [ 0 ] . value
23
+ DEFAULT_REFRESH_INTERVAL_VALUE
28
24
) ;
29
- const [ updatedName , setupdatedName ] = useState ( flow . name || '' ) ;
30
25
31
- useEffect (
32
- ( ) =>
33
- setupdatedRefreshInterval ( validRefreshInterval ( flow ?. refreshInterval ) ) ,
34
- [ flow ]
35
- ) ;
26
+ useEffect ( ( ) => {
27
+ if ( ! flow ) return ;
28
+ const { name : flowName = '' , refreshInterval : flowRefreshInterval } = flow ;
29
+ setupdatedName ( flowName ) ;
30
+ setupdatedRefreshInterval ( validRefreshInterval ( flowRefreshInterval ) ) ;
31
+ } , [ flow ] ) ;
36
32
37
33
const accountName = useMemo (
38
34
( ) => ( accounts || [ ] ) . find ( ( { id } ) => id === account ?. id ) ?. name || '' ,
@@ -44,7 +40,7 @@ const EditFlowSettingsModal = ({
44
40
case 'update' :
45
41
if (
46
42
( updatedName !== flow ?. name ||
47
- flow ?. refreshInterval !== updatedRefreshInterval ) &&
43
+ updatedRefreshInterval !== flow ?. refreshInterval ) &&
48
44
onUpdate
49
45
) {
50
46
onUpdate ( {
@@ -55,17 +51,12 @@ const EditFlowSettingsModal = ({
55
51
break ;
56
52
57
53
case 'delete' :
58
- onDeleteFlow ( ) ;
54
+ onDeleteFlow ?. ( ) ;
59
55
}
60
56
61
- setEditFlowSettings ( false ) ;
57
+ setEditFlowSettings ?. ( false ) ;
62
58
} ;
63
59
64
- const handleChange = ( event , value ) =>
65
- value
66
- ? setupdatedRefreshInterval ( value )
67
- : setupdatedName ( event ?. target ?. value ) ;
68
-
69
60
return (
70
61
< Modal hidden = { ! editFlowSettings } onClose = { closeHandler } >
71
62
< div >
@@ -75,8 +66,8 @@ const EditFlowSettingsModal = ({
75
66
< TextField
76
67
className = "flow-name"
77
68
label = "Flow name"
78
- defaultValue = { flow . name }
79
- onChange = { ( event ) => handleChange ( event ) }
69
+ value = { updatedName }
70
+ onChange = { ( e ) => setupdatedName ( e ?. target ?. value ) }
80
71
/>
81
72
</ div >
82
73
< div >
@@ -90,18 +81,25 @@ const EditFlowSettingsModal = ({
90
81
< BlockText className = "attribute" > { accountName } </ BlockText >
91
82
</ div >
92
83
< div >
93
- < Select
94
- className = "refresh-interval"
95
- label = "Refresh data every"
96
- onChange = { handleChange }
97
- value = { updatedRefreshInterval }
98
- >
99
- { REFRESH_INTERVALS . map ( ( item , index ) => (
100
- < SelectItem key = { index } value = { item . value } >
101
- { item . label }
102
- </ SelectItem >
103
- ) ) }
104
- </ Select >
84
+ < label htmlFor = "refresh-interval-select" > Refresh data every</ label >
85
+ < div >
86
+ < select
87
+ className = "refresh-interval"
88
+ id = "refresh-interval-select"
89
+ value = { updatedRefreshInterval }
90
+ onChange = { ( e ) =>
91
+ setupdatedRefreshInterval (
92
+ e ?. target ?. value || DEFAULT_REFRESH_INTERVAL_VALUE
93
+ )
94
+ }
95
+ >
96
+ { REFRESH_INTERVALS . map ( ( { value, label } ) => (
97
+ < option key = { value } value = { value } >
98
+ { label }
99
+ </ option >
100
+ ) ) }
101
+ </ select >
102
+ </ div >
105
103
</ div >
106
104
</ div >
107
105
< div className = "buttons-bar" >
@@ -127,6 +125,7 @@ const EditFlowSettingsModal = ({
127
125
} ;
128
126
129
127
EditFlowSettingsModal . propTypes = {
128
+ flow : PropTypes . object ,
130
129
onUpdate : PropTypes . func ,
131
130
onDeleteFlow : PropTypes . func ,
132
131
editFlowSettings : PropTypes . bool ,
0 commit comments