Skip to content

Commit 282bcb5

Browse files
authored
fix: individual buckets and telegrafs names should render when Buckets and Telegrafs accordion expands (#3231)
* fix: updated useEffect hook * fix: prettier * feat: state should only update once * chore: added code comment to elaborate * fix: prettier
1 parent 72bd2d5 commit 282bcb5

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

src/authorizations/components/redesigned/CustomApiTokenOverlay.tsx

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, {FC, useState, useContext, useEffect} from 'react'
22
import {connect} from 'react-redux'
33
import 'src/authorizations/components/redesigned/customApiTokenOverlay.scss'
4+
import {isEmpty} from 'lodash'
45

56
// Actions
67
import {getBuckets} from 'src/buckets/actions/thunks'
@@ -81,23 +82,26 @@ const CustomApiTokenOverlay: FC<Props> = props => {
8182
}, [])
8283

8384
useEffect(() => {
84-
if (permissions['telegrafs'] && permissions['buckets']) {
85-
return
86-
}
87-
const perms = {
88-
otherResources: {read: false, write: false},
89-
}
90-
props.allResources.forEach(resource => {
91-
if (resource === 'telegrafs') {
92-
perms[resource] = props.telegrafPermissions
93-
} else if (resource === 'buckets') {
94-
perms[resource] = props.bucketPermissions
95-
} else {
96-
perms[resource] = {read: false, write: false}
85+
if (!isEmpty(props.bucketPermissions.sublevelPermissions)) {
86+
const perms = {
87+
otherResources: {read: false, write: false},
9788
}
98-
})
99-
setPermissions(perms)
100-
}, [props.telegrafPermissions, props.bucketPermissions])
89+
props.allResources.forEach(resource => {
90+
if (resource === 'telegrafs') {
91+
perms[resource] = props.telegrafPermissions
92+
} else if (resource === 'buckets') {
93+
perms[resource] = props.bucketPermissions
94+
} else {
95+
perms[resource] = {read: false, write: false}
96+
}
97+
})
98+
setPermissions(perms)
99+
}
100+
// Each time remoteDataState changes, the useEffect hook will be called.
101+
// BUT, code inside the hook won't run until remoteDataState is 'Done'.
102+
// Only then will props.bucketPermissions.sublevelPermissions will have value.
103+
// Consequently, we update the permissions state.
104+
}, [props.remoteDataState])
101105

102106
const handleDismiss = () => {
103107
props.onClose()
@@ -339,7 +343,6 @@ const mstp = (state: AppState) => {
339343
ResourceType.Buckets,
340344
ResourceType.Telegrafs,
341345
])
342-
343346
const telegrafs = getAll<Telegraf>(state, ResourceType.Telegrafs)
344347
const telegrafPermissions = {
345348
read: false,

0 commit comments

Comments
 (0)