X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/af967786d2c2b02c4f7c18afd7d4694a8eaba34c..8489fb1669592f46853a3c793ad211fa919c30b7:/src/store/sharing-dialog/sharing-dialog-types.ts?ds=sidebyside diff --git a/src/store/sharing-dialog/sharing-dialog-types.ts b/src/store/sharing-dialog/sharing-dialog-types.ts index 97e1979d..58ce3f0f 100644 --- a/src/store/sharing-dialog/sharing-dialog-types.ts +++ b/src/store/sharing-dialog/sharing-dialog-types.ts @@ -2,8 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { PermissionLevel } from '~/models/permission'; -import { getFormValues } from 'redux-form'; +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'; @@ -13,11 +14,13 @@ export const SHARING_INVITATION_FORM_NAME = 'SHARING_INVITATION_FORM_NAME'; export enum VisibilityLevel { PRIVATE = 'Private', SHARED = 'Shared', + ALL_USERS = 'All users', PUBLIC = 'Public', } export interface SharingPublicAccessFormData { visibility: VisibilityLevel; + initialVisibility: VisibilityLevel; permissionUuid: string; } @@ -48,3 +51,8 @@ export const getSharingMangementFormData = (state: any) => 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) && !!state.form[SHARING_INVITATION_FORM_NAME].values?.invitedPeople.length);