@@ -25,6 +25,7 @@ import ButtonHelper from 'src/components/ButtonHelper'
25
25
import { AddDelegateModal } from 'src/routes/safe/components/Settings/Delegates/AddDelegateModal'
26
26
import { RemoveDelegateModal } from 'src/routes/safe/components/Settings/Delegates/RemoveDelegateModal'
27
27
import { EditDelegateModal } from 'src/routes/safe/components/Settings/Delegates/EditDelegateModal'
28
+ import { grantedSelector } from 'src/routes/safe/container/selector'
28
29
29
30
// TODO: these types will come from the Client GW SDK once #72 is merged
30
31
type Page < T > = {
@@ -51,6 +52,10 @@ const StyledHeading = styled(Heading)`
51
52
padding-bottom: 0;
52
53
`
53
54
55
+ const StyledButtonLink = styled ( ButtonLink ) < { isDisabled : boolean } > `
56
+ display: ${ ( { isDisabled } ) => ( isDisabled ? 'none' : 'flex' ) } ;
57
+ `
58
+
54
59
const useStyles = makeStyles ( styles )
55
60
56
61
const Delegates = ( ) : ReactElement => {
@@ -65,6 +70,7 @@ const Delegates = (): ReactElement => {
65
70
const [ addressToRemove , setAddressToRemove ] = useState < string > ( '' )
66
71
const columns = generateColumns ( )
67
72
const autoColumns = columns . filter ( ( { custom } ) => ! custom )
73
+ const granted = useSelector ( grantedSelector )
68
74
69
75
const classes = useStyles ( styles )
70
76
@@ -171,17 +177,18 @@ const Delegates = (): ReactElement => {
171
177
< StyledBlock >
172
178
< StyledHeading tag = "h2" > Manage Safe Delegates</ StyledHeading >
173
179
< Paragraph > Get, add and delete delegates.</ Paragraph >
174
- < ButtonLink
180
+ < StyledButtonLink
175
181
onClick = { ( ) => {
176
182
setAddDelegateModalOpen ( true )
177
183
} }
178
184
color = "primary"
179
185
iconType = "add"
180
186
iconSize = "sm"
181
187
textSize = "xl"
188
+ isDisabled = { ! granted }
182
189
>
183
190
Add delegate
184
- </ ButtonLink >
191
+ </ StyledButtonLink >
185
192
< pre > { JSON . stringify ( delegatesList , undefined , 2 ) } </ pre >
186
193
< TableContainer >
187
194
< Table
@@ -219,28 +226,32 @@ const Delegates = (): ReactElement => {
219
226
} ) }
220
227
< TableCell component = "td" >
221
228
< Row align = "end" className = { classes . actions } >
222
- < ButtonHelper
223
- onClick = { ( ) => {
224
- setDelegateToEdit ( row [ DELEGATE_ADDRESS_ID ] )
225
- setEditDelegateModalOpen ( true )
226
- } }
227
- >
228
- < Icon size = "sm" type = "edit" tooltip = "Edit delegate" className = { classes . editEntryButton } />
229
- </ ButtonHelper >
230
- < ButtonHelper
231
- onClick = { ( ) => {
232
- setAddressToRemove ( row [ DELEGATE_ADDRESS_ID ] )
233
- setRemoveDelegateModalOpen ( true )
234
- } }
235
- >
236
- < Icon
237
- size = "sm"
238
- type = "delete"
239
- color = "error"
240
- tooltip = "Remove delegate"
241
- className = { classes . removeEntryButton }
242
- />
243
- </ ButtonHelper >
229
+ { granted && (
230
+ < >
231
+ < ButtonHelper
232
+ onClick = { ( ) => {
233
+ setDelegateToEdit ( row [ DELEGATE_ADDRESS_ID ] )
234
+ setEditDelegateModalOpen ( true )
235
+ } }
236
+ >
237
+ < Icon size = "sm" type = "edit" tooltip = "Edit delegate" className = { classes . editEntryButton } />
238
+ </ ButtonHelper >
239
+ < ButtonHelper
240
+ onClick = { ( ) => {
241
+ setAddressToRemove ( row [ DELEGATE_ADDRESS_ID ] )
242
+ setRemoveDelegateModalOpen ( true )
243
+ } }
244
+ >
245
+ < Icon
246
+ size = "sm"
247
+ type = "delete"
248
+ color = "error"
249
+ tooltip = "Remove delegate"
250
+ className = { classes . removeEntryButton }
251
+ />
252
+ </ ButtonHelper >
253
+ </ >
254
+ ) }
244
255
</ Row >
245
256
</ TableCell >
246
257
</ TableRow >
0 commit comments