X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/986ff42ab49d2fd9a2da53fcc0f08a7933719b64..f55d7e31aa315de4eece3139c4fa1df7d6eb929e:/src/views-components/sharing-dialog/sharing-dialog-component.tsx diff --git a/src/views-components/sharing-dialog/sharing-dialog-component.tsx b/src/views-components/sharing-dialog/sharing-dialog-component.tsx index 1792bd67..259390aa 100644 --- a/src/views-components/sharing-dialog/sharing-dialog-component.tsx +++ b/src/views-components/sharing-dialog/sharing-dialog-component.tsx @@ -2,63 +2,124 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; -import { Dialog, DialogTitle, Button, Grid, DialogContent, CircularProgress, Paper } from '@material-ui/core'; -import { DialogActions } from '~/components/dialog-actions/dialog-actions'; -import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles'; - +import React from 'react'; +import { + Dialog, + DialogTitle, + Button, + Grid, + DialogContent, + CircularProgress, + Paper, + Tabs, + Tab, +} from '@material-ui/core'; +import { + StyleRulesCallback, + WithStyles, + withStyles +} from '@material-ui/core/styles'; +import { DialogActions } from 'components/dialog-actions/dialog-actions'; +import { SharingURLsContent } from './sharing-urls'; +import { + extractUuidObjectType, + ResourceObjectType +} from 'models/resource'; +import { SharingInvitationForm } from './sharing-invitation-form'; +import { SharingManagementForm } from './sharing-management-form'; export interface SharingDialogDataProps { open: boolean; loading: boolean; saveEnabled: boolean; - advancedEnabled: boolean; - children: React.ReactNode; + sharedResourceUuid: string; } export interface SharingDialogActionProps { onClose: () => void; - onExited: () => void; onSave: () => void; - onAdvanced: () => void; + onCreateSharingToken: () => void; + refreshPermissions: () => void; +} +enum SharingDialogTab { + PERMISSIONS = 0, + URLS = 1, } export default (props: SharingDialogDataProps & SharingDialogActionProps) => { - const { children, open, loading, advancedEnabled, saveEnabled, onAdvanced, onClose, onExited, onSave } = props; + const { open, loading, saveEnabled, sharedResourceUuid, + onClose, onSave, onCreateSharingToken, refreshPermissions } = props; + const showTabs = extractUuidObjectType(sharedResourceUuid) === ResourceObjectType.COLLECTION; + const [tabNr, setTabNr] = React.useState(SharingDialogTab.PERMISSIONS); + + // Sets up the dialog depending on the resource type + if (!showTabs && tabNr !== SharingDialogTab.PERMISSIONS) { + setTabNr(SharingDialogTab.PERMISSIONS); + } + return + disableBackdropClick={saveEnabled} + disableEscapeKeyDown={saveEnabled}> Sharing settings - + + { showTabs && + { + if (tb === SharingDialogTab.PERMISSIONS) { + refreshPermissions(); + } + setTabNr(tb)} + }> + + + + } - {children} + { tabNr === SharingDialogTab.PERMISSIONS && + + + + + + } + { tabNr === SharingDialogTab.URLS && + + } - {advancedEnabled && - - - - } + { tabNr === SharingDialogTab.PERMISSIONS && + + + } + { tabNr === SharingDialogTab.URLS && - + } + { tabNr === SharingDialogTab.PERMISSIONS && + + } + +