import { dialogActions } from "~/store/dialog/dialog-actions";
import { withDialog } from "~/store/dialog/with-dialog";
-import { SHARING_DIALOG_NAME, SharingPublicAccessFormData, SHARING_PUBLIC_ACCESS_FORM_NAME, SHARING_INVITATION_FORM_NAME, SharingManagementFormData, SharingInvitationFormData, VisibilityLevel } from './sharing-dialog-types';
+import { SHARING_DIALOG_NAME, SharingPublicAccessFormData, SHARING_PUBLIC_ACCESS_FORM_NAME, SHARING_INVITATION_FORM_NAME, SharingManagementFormData, SharingInvitationFormData, VisibilityLevel, getSharingMangementFormData, getSharingPublicAccessFormData } from './sharing-dialog-types';
import { Dispatch } from 'redux';
import { ServiceRepository } from "~/services/services";
import { FilterBuilder } from '~/services/api/filter-builder';
export const connectSharingDialog = withDialog(SHARING_DIALOG_NAME);
export const saveSharingDialogChanges = async (dispatch: Dispatch) => {
- await Promise.all([
- dispatch<any>(savePublicPermissionChanges),
- dispatch<any>(saveManagementChanges),
- dispatch<any>(sendInvitations),
- ]);
+ await dispatch<any>(savePublicPermissionChanges);
+ await dispatch<any>(saveManagementChanges);
+ await dispatch<any>(sendInvitations);
dispatch(reset(SHARING_INVITATION_FORM_NAME));
await dispatch<any>(loadSharingDialog);
};
const { user } = state.auth;
const dialog = getDialog<string>(state.dialog, SHARING_DIALOG_NAME);
if (dialog && user) {
- const { permissionUuid, visibility } = getFormValues(SHARING_PUBLIC_ACCESS_FORM_NAME)(state) as SharingPublicAccessFormData;
+ const { permissionUuid, visibility } = getSharingPublicAccessFormData(state);
if (permissionUuid) {
if (visibility === VisibilityLevel.PUBLIC) {
const dialog = getDialog<string>(state.dialog, SHARING_DIALOG_NAME);
if (dialog && user) {
- const { initialPermissions, permissions } = getFormValues(SHARING_MANAGEMENT_FORM_NAME)(state) as SharingManagementFormData;
+ const { initialPermissions, permissions } = getSharingMangementFormData(state);
+ const { visibility } = getSharingPublicAccessFormData(state);
- const cancelledPermissions = differenceWith(
- initialPermissions,
- permissions,
- (a, b) => a.permissionUuid === b.permissionUuid
- );
- await Promise.all(cancelledPermissions.map(({ permissionUuid }) =>
- permissionService.delete(permissionUuid)
- ));
+ if (visibility === VisibilityLevel.PRIVATE) {
- await Promise.all(permissions.map(({ permissionUuid, permissions }) =>
- permissionService.update(permissionUuid, { name: permissions })
- ));
+ await Promise.all(initialPermissions.map(({ permissionUuid, permissions }) =>
+ permissionService.delete(permissionUuid)
+ ));
+ } else {
+
+ const cancelledPermissions = differenceWith(
+ initialPermissions,
+ permissions,
+ (a, b) => a.permissionUuid === b.permissionUuid
+ );
+
+ await Promise.all(cancelledPermissions.map(({ permissionUuid }) =>
+ permissionService.delete(permissionUuid)
+ ));
+
+ await Promise.all(permissions.map(({ permissionUuid, permissions }) =>
+ permissionService.update(permissionUuid, { name: permissions })
+ ));
+ }
}
};
if (dialog && user) {
const invitations = getFormValues(SHARING_INVITATION_FORM_NAME)(state) as SharingInvitationFormData;
-
- const promises = invitations.invitedPeople
- .map(person => ({
- ownerUuid: user.uuid,
- headUuid: dialog.data,
- tailUuid: person.uuid,
- name: invitations.permissions
- }))
- .map(data => permissionService.create(data));
-
- await Promise.all(promises);
+ const { visibility } = getSharingPublicAccessFormData(state);
+
+ if (visibility !== VisibilityLevel.PRIVATE) {
+ const promises = invitations.invitedPeople
+ .map(person => ({
+ ownerUuid: user.uuid,
+ headUuid: dialog.data,
+ tailUuid: person.uuid,
+ name: invitations.permissions
+ }))
+ .map(data => permissionService.create(data));
+
+ await Promise.all(promises);
+ }
}
};
// SPDX-License-Identifier: AGPL-3.0
import { reduxForm } from 'redux-form';
-import { connect } from 'react-redux';
-import { compose } from 'redux';
import SharingManagementFormComponent from './sharing-management-form-component';
import { SHARING_MANAGEMENT_FORM_NAME } from '~/store/sharing-dialog/sharing-dialog-types';
-import { PermissionLevel } from '~/models/permission';
-export const SharingManagementForm = compose(
- connect(() => ({
- initialValues: {
- permissions: [
- {
- email: 'chrystian.klingenberg@contractors.roche.com',
- permissions: PermissionLevel.CAN_MANAGE,
- },
- {
- email: 'artur.janicki@contractors.roche.com',
- permissions: PermissionLevel.CAN_WRITE,
- },
- ],
- }
- })),
- reduxForm({ form: SHARING_MANAGEMENT_FORM_NAME })
-)(SharingManagementFormComponent);
\ No newline at end of file
+export const SharingManagementForm = reduxForm(
+ { form: SHARING_MANAGEMENT_FORM_NAME }
+)(SharingManagementFormComponent);
// SPDX-License-Identifier: AGPL-3.0
import { reduxForm } from 'redux-form';
-import { connect } from 'react-redux';
-import { compose } from 'redux';
import SharingPublicAccessFormComponent from './sharing-public-access-form-component';
import { SHARING_PUBLIC_ACCESS_FORM_NAME } from '~/store/sharing-dialog/sharing-dialog-types';
-import { PermissionLevel } from '~/models/permission';
-export const SharingPublicAccessForm = compose(
- connect(() => ({
- initialValues: {
- enabled: false,
- permissions: PermissionLevel.CAN_READ,
- }
- })),
- reduxForm({ form: SHARING_PUBLIC_ACCESS_FORM_NAME })
-)(SharingPublicAccessFormComponent);
\ No newline at end of file
+
+export const SharingPublicAccessForm = reduxForm(
+ { form: SHARING_PUBLIC_ACCESS_FORM_NAME }
+)(SharingPublicAccessFormComponent);