Extract function for adding group member
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Sun, 16 Dec 2018 18:39:19 +0000 (19:39 +0100)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Sun, 16 Dec 2018 18:39:19 +0000 (19:39 +0100)
Feature #14505

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

src/store/groups-panel/groups-panel-actions.ts

index 2787fc3b803457bd75d5cde0042158a7db3ad6cb..edda6af76e10ad678a781be8d25ec84592cb5608 100644 (file)
@@ -108,18 +108,9 @@ export const createGroup = ({ name, users = [] }: CreateGroupFormData) =>
 
             for (const user of users) {
 
-                await createPermissionLink({
-                    head: { ...newGroup },
-                    tail: { ...user },
-                    permissionLevel: PermissionLevel.CAN_READ,
-                    dispatch,
-                    permissionService,
-                });
-
-                await createPermissionLink({
-                    head: { ...user },
-                    tail: { ...newGroup },
-                    permissionLevel: PermissionLevel.CAN_READ,
+                await addGroupMember({
+                    user,
+                    group: newGroup,
                     dispatch,
                     permissionService,
                 });
@@ -148,6 +139,30 @@ export const createGroup = ({ name, users = [] }: CreateGroupFormData) =>
         }
     };
 
+interface AddGroupMemberArgs {
+    user: { uuid: string, name: string };
+    group: { uuid: string, name: string };
+    dispatch: Dispatch;
+    permissionService: PermissionService;
+}
+
+const addGroupMember = async ({ user, group, ...args }: AddGroupMemberArgs) => {
+
+    await createPermissionLink({
+        head: { ...group },
+        tail: { ...user },
+        permissionLevel: PermissionLevel.CAN_MANAGE,
+        ...args,
+    });
+
+    await createPermissionLink({
+        head: { ...user },
+        tail: { ...group },
+        permissionLevel: PermissionLevel.CAN_READ,
+        ...args,
+    });
+
+};
 
 interface CreatePermissionLinkArgs {
     head: { uuid: string, name: string };