Merge branch '20899-wf-delete' refs #20899
[arvados-workbench2.git] / src / store / resources / resources.ts
index e7153decd70af11a91131c8f8009a26a74df73eb..e3fb2eb3d53b154b9e7cc254b9b7f406df1ff582 100644 (file)
@@ -2,11 +2,30 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { Resource } from "~/models/resource";
-import { ResourceKind } from '~/models/resource';
+import { Resource, EditableResource } from "models/resource";
+import { ResourceKind } from 'models/resource';
+import { ProjectResource } from "models/project";
+import { GroupResource } from "models/group";
 
 export type ResourcesState = { [key: string]: Resource };
 
+export const getResourceWithEditableStatus = <T extends GroupResource & EditableResource>(id: string, userUuid?: string) =>
+    (state: ResourcesState): T | undefined => {
+        if (state[id] === undefined) { return; }
+
+        const resource = JSON.parse(JSON.stringify(state[id])) as T;
+
+        if (resource) {
+            if (resource.canWrite === undefined) {
+                resource.isEditable = (state[resource.ownerUuid] as GroupResource)?.canWrite;
+            } else {
+                resource.isEditable = resource.canWrite;
+            }
+        }
+
+        return resource;
+    };
+
 export const getResource = <T extends Resource = Resource>(id: string) =>
     (state: ResourcesState): T | undefined =>
         state[id] as T;