-const mapStateToProps = (state: RootState, { advancedViewOpen, working, ...props }: Props): SharingDialogDataProps => ({
- ...props,
- saveEnabled: hasChanges(state),
- loading: working,
- advancedEnabled: !advancedViewOpen,
- children: <SharingDialogContent {...{ advancedViewOpen }} />,
-});
+const sharingManagementFormSelector = formValueSelector(SHARING_MANAGEMENT_FORM_NAME);
+
+const mapStateToProps = (state: RootState, { working, ...props }: Props): SharingDialogDataProps => {
+ const dialog = getDialog<SharingDialogData>(state.dialog, SHARING_DIALOG_NAME);
+ const sharedResourceUuid = dialog?.data.resourceUuid || '';
+ const sharingURLsDisabled = state.auth.config.clusterConfig.Workbench.DisableSharingURLsUI;
+ return ({
+ ...props,
+ permissions: sharingManagementFormSelector(state, 'permissions'),
+ saveEnabled: hasChanges(state),
+ loading: working,
+ sharedResourceUuid,
+ sharingURLsDisabled,
+ sharingURLsNr: !sharingURLsDisabled
+ ? (filterResources((resource: ApiClientAuthorization) =>
+ resource.kind === ResourceKind.API_CLIENT_AUTHORIZATION &&
+ resource.scopes.includes(`GET /arvados/v1/collections/${sharedResourceUuid}`) &&
+ resource.scopes.includes(`GET /arvados/v1/collections/${sharedResourceUuid}/`) &&
+ resource.scopes.includes('GET /arvados/v1/keep_services/accessible')
+ )(state.resources) as ApiClientAuthorization[]).length
+ : 0,
+ privateAccess: getSharingPublicAccessFormData(state)?.visibility === VisibilityLevel.PRIVATE,
+ })
+};