X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/96fdc9e2e344e86378dd156593d8166f309ea1af..95f1dba808337fed91cbcba656f94b68fc421e41:/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 15d7f660..6c4d4f02 100644 --- a/src/views-components/sharing-dialog/sharing-dialog-component.tsx +++ b/src/views-components/sharing-dialog/sharing-dialog-component.tsx @@ -16,6 +16,7 @@ import { Checkbox, FormControlLabel, Typography, + Tooltip, } from '@material-ui/core'; import { StyleRulesCallback, @@ -39,6 +40,7 @@ import { import DateFnsUtils from "@date-io/date-fns"; import moment from 'moment'; import { SharingPublicAccessForm } from './sharing-public-access-form'; +import { AddIcon } from 'components/icon/icon'; export interface SharingDialogDataProps { open: boolean; @@ -47,6 +49,8 @@ export interface SharingDialogDataProps { sharedResourceUuid: string; sharingURLsNr: number; privateAccess: boolean; + sharingURLsDisabled: boolean; + permissions: any[]; } export interface SharingDialogActionProps { onClose: () => void; @@ -58,20 +62,33 @@ enum SharingDialogTab { PERMISSIONS = 0, URLS = 1, } -export default (props: SharingDialogDataProps & SharingDialogActionProps) => { +export type SharingDialogComponentProps = SharingDialogDataProps & SharingDialogActionProps; + +export default (props: SharingDialogComponentProps) => { const { open, loading, saveEnabled, sharedResourceUuid, - sharingURLsNr, privateAccess, + sharingURLsNr, privateAccess, sharingURLsDisabled, permissions, onClose, onSave, onCreateSharingToken, refreshPermissions } = props; - const showTabs = extractUuidObjectType(sharedResourceUuid) === ResourceObjectType.COLLECTION; + const showTabs = !sharingURLsDisabled && extractUuidObjectType(sharedResourceUuid) === ResourceObjectType.COLLECTION; const [tabNr, setTabNr] = React.useState(SharingDialogTab.PERMISSIONS); const [expDate, setExpDate] = React.useState(); const [withExpiration, setWithExpiration] = React.useState(false); + const [permissionsCount, setPermissionsCount] = React.useState(0); // Sets up the dialog depending on the resource type if (!showTabs && tabNr !== SharingDialogTab.PERMISSIONS) { setTabNr(SharingDialogTab.PERMISSIONS); } + React.useEffect(() => { + if (permissions && permissions.length !== permissionsCount) { + if (permissionsCount > permissions.length) { + setTimeout(onSave, 0); + } + + setPermissionsCount(permissions.length); + } + }, [permissions, onSave, setPermissionsCount, permissionsCount]) + React.useEffect(() => { if (!withExpiration) { setExpDate(undefined); @@ -151,7 +168,8 @@ export default (props: SharingDialogDataProps & SharingDialogActionProps) => { } - { tabNr === SharingDialogTab.PERMISSIONS && privateAccess && sharingURLsNr > 0 && + { tabNr === SharingDialogTab.PERMISSIONS && !sharingURLsDisabled && + privateAccess && sharingURLsNr > 0 && Although there aren't specific permissions set, this is publicly accessible via Sharing URL(s). @@ -176,10 +194,12 @@ export default (props: SharingDialogDataProps & SharingDialogActionProps) => { } { tabNr === SharingDialogTab.PERMISSIONS && - + + + }