@@ -27,7 +27,10 @@ export default function Datasets() {
2727 const { getApi } = useContext ( ApiContext ) ;
2828 const [ dapi ] = useState ( ( ) => getApi ( ) ) ;
2929 const [ datasets , setDatasets ] = useState < Dataset [ ] | null > ( null ) ;
30- const [ groups , setGroups ] = useState < Group [ ] > ( null ) ;
30+ const [ userGroups , setUserGroups ] = useState < {
31+ availableGroups : Group [ ] ;
32+ writeGroups : Group [ ] ;
33+ } > ( { availableGroups : [ ] , writeGroups : [ ] } ) ;
3134
3235 const [ initError , setInitError ] = useState ( false ) ;
3336
@@ -125,17 +128,20 @@ export default function Datasets() {
125128 ( async ( ) => {
126129 try {
127130 let currentDatasets = await dapi . getBreadboxDatasets ( ) ;
128- // write access set to true if not advanced mode
129- const userGroups = await dapi . getGroups ( ! isAdvancedMode ) ;
130- setGroups ( userGroups ) ;
131131
132+ // write access set to true if not advanced mode
133+ const availableGroups = await dapi . getGroups ( ! isAdvancedMode ) ;
132134 if ( ! isAdvancedMode ) {
133- const group_ids = userGroups . map ( ( group ) => {
135+ const group_ids = availableGroups . map ( ( group ) => {
134136 return group . id ;
135137 } ) ;
136138 currentDatasets = currentDatasets . filter ( ( dataset ) =>
137139 group_ids . includes ( dataset . group_id )
138140 ) ;
141+ setUserGroups ( { availableGroups, writeGroups : availableGroups } ) ;
142+ } else {
143+ const writeGroups = await dapi . getGroups ( true ) ;
144+ setUserGroups ( { availableGroups, writeGroups } ) ;
139145 }
140146
141147 setDatasets ( currentDatasets ) ;
@@ -171,7 +177,7 @@ export default function Datasets() {
171177 formTitle = "Edit Dataset" ;
172178 datasetFormComponent = (
173179 < DatasetEditForm
174- groups = { groups }
180+ groups = { userGroups . availableGroups }
175181 getDataTypesAndPriorities = { getDataTypesAndPriorities }
176182 onSubmit = { async (
177183 datasetId : string ,
@@ -201,7 +207,7 @@ export default function Datasets() {
201207 datasetFormComponent = (
202208 < DatasetForm
203209 getDimensionTypes = { getDimensionTypes }
204- groups = { groups }
210+ groups = { userGroups . availableGroups }
205211 getDataTypesAndPriorities = { getDataTypesAndPriorities }
206212 uploadFile = { postFileUpload }
207213 uploadDataset = { postDatasetUpload }
@@ -244,7 +250,7 @@ export default function Datasets() {
244250 isEditDatasetMode ,
245251 datasetToEdit ,
246252 showDatasetModal ,
247- groups ,
253+ userGroups . availableGroups ,
248254 getDataTypesAndPriorities ,
249255 updateDataset ,
250256 getDimensionTypes ,
@@ -476,7 +482,11 @@ export default function Datasets() {
476482 ] }
477483 />
478484 < div className = { styles . primaryButtons } >
479- < Button bsStyle = "primary" onClick = { ( ) => setShowDatasetModal ( true ) } >
485+ < Button
486+ bsStyle = "primary"
487+ onClick = { ( ) => setShowDatasetModal ( true ) }
488+ disabled = { userGroups . writeGroups . length === 0 }
489+ >
480490 Upload New Dataset
481491 </ Button >
482492 < Button
0 commit comments