11// Libraries
22import React , { FC , useContext } from 'react'
3- import { useSelector } from 'react-redux'
43
54// Contexts
65import { WriteDataDetailsContext } from 'src/writeData/components/WriteDataDetailsContext'
@@ -9,9 +8,6 @@ import CreateBucketButton from 'src/buckets/components/CreateBucketButton'
98// Constants
109import { DOCS_URL_VERSION } from 'src/shared/constants/fluxFunctions'
1110
12- // Utils
13- import { getAll } from 'src/resources/selectors'
14-
1511// Components
1612import {
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-
2922interface 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 }
0 commit comments