|
1 | 1 | import React, {FC, useState, useContext, useEffect} from 'react' |
2 | 2 | import {connect} from 'react-redux' |
3 | 3 | import 'src/authorizations/components/redesigned/customApiTokenOverlay.scss' |
| 4 | +import {isEmpty} from 'lodash' |
4 | 5 |
|
5 | 6 | // Actions |
6 | 7 | import {getBuckets} from 'src/buckets/actions/thunks' |
@@ -81,23 +82,26 @@ const CustomApiTokenOverlay: FC<Props> = props => { |
81 | 82 | }, []) |
82 | 83 |
|
83 | 84 | 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}, |
97 | 88 | } |
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]) |
101 | 105 |
|
102 | 106 | const handleDismiss = () => { |
103 | 107 | props.onClose() |
@@ -339,7 +343,6 @@ const mstp = (state: AppState) => { |
339 | 343 | ResourceType.Buckets, |
340 | 344 | ResourceType.Telegrafs, |
341 | 345 | ]) |
342 | | - |
343 | 346 | const telegrafs = getAll<Telegraf>(state, ResourceType.Telegrafs) |
344 | 347 | const telegrafPermissions = { |
345 | 348 | read: false, |
|
0 commit comments