Skip to content

Commit 64f5aef

Browse files
author
Gene Hynson
authored
fix: advanced bucket selector onCreate callback (#4731)
1 parent 12b2932 commit 64f5aef

File tree

3 files changed

+28
-29
lines changed

3 files changed

+28
-29
lines changed

src/buckets/components/CreateBucketButton.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,13 @@ const CreateBucketButton: FC<Props> = ({
4242
dispatch(checkBucketLimits())
4343
}, [dispatch])
4444

45-
const overlayParams = useSimplifiedBucketForm
46-
? {
47-
useSimplifiedBucketForm: true,
48-
callbackAfterBucketCreation,
49-
}
50-
: null
5145
const handleItemClick = (): void => {
5246
event('create bucket clicked')
53-
onShowOverlay('create-bucket', overlayParams, onDismissOverlay)
47+
onShowOverlay(
48+
'create-bucket',
49+
{useSimplifiedBucketForm, callbackAfterBucketCreation},
50+
onDismissOverlay
51+
)
5452
}
5553

5654
if (CLOUD && limitStatus === 'exceeded') {

src/writeData/components/WriteDataHelperBuckets.tsx

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// Libraries
22
import React, {FC, useContext} from 'react'
3-
import {useSelector} from 'react-redux'
43

54
// Contexts
65
import {WriteDataDetailsContext} from 'src/writeData/components/WriteDataDetailsContext'
@@ -9,9 +8,6 @@ import CreateBucketButton from 'src/buckets/components/CreateBucketButton'
98
// Constants
109
import {DOCS_URL_VERSION} from 'src/shared/constants/fluxFunctions'
1110

12-
// Utils
13-
import {getAll} from 'src/resources/selectors'
14-
1511
// Components
1612
import {
1713
List,
@@ -23,9 +19,6 @@ import {
2319
EmptyState,
2420
} from '@influxdata/clockface'
2521

26-
// Types
27-
import {AppState, ResourceType, Bucket} from 'src/types'
28-
2922
interface Props {
3023
className?: string
3124
useSimplifiedBucketForm?: boolean
@@ -35,10 +28,26 @@ const WriteDataHelperBuckets: FC<Props> = ({
3528
className = 'write-data--details-widget-title',
3629
useSimplifiedBucketForm = false,
3730
}) => {
38-
const buckets = useSelector((state: AppState) =>
39-
getAll<Bucket>(state, ResourceType.Buckets).filter(b => b.type === 'user')
40-
)
41-
const {bucket, changeBucket} = useContext(WriteDataDetailsContext)
31+
const {bucket, buckets, changeBucket} = useContext(WriteDataDetailsContext)
32+
const isSelected = (bucketID: string): boolean => {
33+
if (!bucket) {
34+
return false
35+
}
36+
return bucketID === bucket.id
37+
}
38+
39+
const filteredBuckets = buckets
40+
.filter(b => b.type === 'user')
41+
// sort by selected and then by name
42+
.sort((a, b) => {
43+
if (isSelected(a.id)) {
44+
return -1
45+
}
46+
if (isSelected(b.id)) {
47+
return 1
48+
}
49+
return a.name.localeCompare(b.name)
50+
})
4251

4352
let body = (
4453
<EmptyState className="write-data--details-empty-state">
@@ -55,23 +64,15 @@ const WriteDataHelperBuckets: FC<Props> = ({
5564
</EmptyState>
5665
)
5766

58-
const isSelected = (bucketID: string): boolean => {
59-
if (!bucket) {
60-
return false
61-
}
62-
63-
return bucketID === bucket.id
64-
}
65-
66-
if (buckets.length) {
67+
if (filteredBuckets.length) {
6768
body = (
6869
<List
6970
backgroundColor={InfluxColors.Grey5}
7071
style={{height: '200px'}}
7172
maxHeight="200px"
7273
testID="buckets--list"
7374
>
74-
{buckets.map(b => (
75+
{filteredBuckets.map(b => (
7576
<List.Item
7677
size={ComponentSize.Small}
7778
key={b.id}

src/writeData/subscriptions/components/SubscriptionFormContent.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const SubscriptionFormContent: FC<Props> = ({
4949
if (found) {
5050
changeBucket(found)
5151
}
52-
}, [])
52+
}, [buckets.length])
5353

5454
return (
5555
<Grid>

0 commit comments

Comments
 (0)