X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3f809e0be2a712d1e576f1b2acf4aff73e0f16b0..546052817ac18623f5389914a3077e8cc6a3d4f4:/src/store/sharing-dialog/sharing-dialog-types.ts diff --git a/src/store/sharing-dialog/sharing-dialog-types.ts b/src/store/sharing-dialog/sharing-dialog-types.ts index e8f0794861..da6ca9e122 100644 --- a/src/store/sharing-dialog/sharing-dialog-types.ts +++ b/src/store/sharing-dialog/sharing-dialog-types.ts @@ -3,25 +3,34 @@ // SPDX-License-Identifier: AGPL-3.0 import { PermissionLevel } from '~/models/permission'; -import { SharingManagementForm } from '../../views-components/sharing-dialog/sharing-management-form'; +import { getFormValues, isDirty } from 'redux-form'; +import { RootState } from '~/store/store'; export const SHARING_DIALOG_NAME = 'SHARING_DIALOG_NAME'; export const SHARING_PUBLIC_ACCESS_FORM_NAME = 'SHARING_PUBLIC_ACCESS_FORM_NAME'; export const SHARING_MANAGEMENT_FORM_NAME = 'SHARING_MANAGEMENT_FORM_NAME'; export const SHARING_INVITATION_FORM_NAME = 'SHARING_INVITATION_FORM_NAME'; +export enum VisibilityLevel { + PRIVATE = 'Private', + SHARED = 'Shared', + PUBLIC = 'Public', +} + export interface SharingPublicAccessFormData { - enabled: boolean; - permission: PermissionLevel; + visibility: VisibilityLevel; + permissionUuid: string; } export interface SharingManagementFormData { permissions: SharingManagementFormDataRow[]; + initialPermissions: SharingManagementFormDataRow[]; } export interface SharingManagementFormDataRow { email: string; - permission: PermissionLevel; + permissions: PermissionLevel; + permissionUuid: string; } export interface SharingInvitationFormData { @@ -33,4 +42,15 @@ export interface SharingInvitationFormPersonData { email: string; name: string; uuid: string; -} \ No newline at end of file +} + +export const getSharingMangementFormData = (state: any) => + getFormValues(SHARING_MANAGEMENT_FORM_NAME)(state) as SharingManagementFormData; + +export const getSharingPublicAccessFormData = (state: any) => + getFormValues(SHARING_PUBLIC_ACCESS_FORM_NAME)(state) as SharingPublicAccessFormData; + +export const hasChanges = (state: RootState) => + isDirty(SHARING_PUBLIC_ACCESS_FORM_NAME)(state) || + isDirty(SHARING_MANAGEMENT_FORM_NAME)(state) || + isDirty(SHARING_INVITATION_FORM_NAME)(state);