X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0259b9ba3e4b296fd4d360a7f48f6d9ac53ce38e..3fe29b3b329b7d61fe8740c02d6f84454d9c310b:/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 634e9758ed..da6ca9e122 100644 --- a/src/store/sharing-dialog/sharing-dialog-types.ts +++ b/src/store/sharing-dialog/sharing-dialog-types.ts @@ -3,24 +3,34 @@ // SPDX-License-Identifier: AGPL-3.0 import { PermissionLevel } from '~/models/permission'; +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; - permissions: PermissionLevel; + visibility: VisibilityLevel; + permissionUuid: string; } export interface SharingManagementFormData { permissions: SharingManagementFormDataRow[]; + initialPermissions: SharingManagementFormDataRow[]; } export interface SharingManagementFormDataRow { email: string; permissions: PermissionLevel; + permissionUuid: string; } export interface SharingInvitationFormData { @@ -32,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);