Add visibility info text
[arvados-workbench2.git] / src / store / sharing-dialog / sharing-dialog-types.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { PermissionLevel } from '~/models/permission';
6 import { getFormValues } from 'redux-form';
7
8 export const SHARING_DIALOG_NAME = 'SHARING_DIALOG_NAME';
9 export const SHARING_PUBLIC_ACCESS_FORM_NAME = 'SHARING_PUBLIC_ACCESS_FORM_NAME';
10 export const SHARING_MANAGEMENT_FORM_NAME = 'SHARING_MANAGEMENT_FORM_NAME';
11 export const SHARING_INVITATION_FORM_NAME = 'SHARING_INVITATION_FORM_NAME';
12
13 export enum VisibilityLevel {
14     PRIVATE = 'Private',
15     SHARED = 'Shared',
16     PUBLIC = 'Public',
17 }
18
19 export interface SharingPublicAccessFormData {
20     visibility: VisibilityLevel;
21     permissionUuid: string;
22 }
23
24 export interface SharingManagementFormData {
25     permissions: SharingManagementFormDataRow[];
26     initialPermissions: SharingManagementFormDataRow[];
27 }
28
29 export interface SharingManagementFormDataRow {
30     email: string;
31     permissions: PermissionLevel;
32     permissionUuid: string;
33 }
34
35 export interface SharingInvitationFormData {
36     permissions: PermissionLevel;
37     invitedPeople: SharingInvitationFormPersonData[];
38 }
39
40 export interface SharingInvitationFormPersonData {
41     email: string;
42     name: string;
43     uuid: string;
44 }
45
46 export const getSharingMangementFormData = (state: any) =>
47     getFormValues(SHARING_MANAGEMENT_FORM_NAME)(state) as SharingManagementFormData;
48
49 export const getSharingPublicAccessFormData = (state: any) =>
50     getFormValues(SHARING_PUBLIC_ACCESS_FORM_NAME)(state) as SharingPublicAccessFormData;