20829: Check parent for editable status 20829-can-manage
authorPeter Amstutz <peter.amstutz@curii.com>
Tue, 22 Aug 2023 19:40:16 +0000 (15:40 -0400)
committerPeter Amstutz <peter.amstutz@curii.com>
Tue, 22 Aug 2023 19:40:16 +0000 (15:40 -0400)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

src/store/resources/resources.test.ts
src/store/resources/resources.ts

index 503e19a2e88b996fab068e580f5997b37edca4d9..64e19fe501a483e35d3b9c1637c013d9a588792d 100644 (file)
@@ -20,7 +20,7 @@ describe('resources', () => {
         const resourcesState = {
             [groupFixtures.editable_project_resource_uuid]: {
                 uuid: groupFixtures.editable_project_resource_uuid,
-                ownerUuid: groupFixtures.user_uuid,
+                ownerUuid: groupFixtures.user_resource_uuid,
                 createdAt: 'string',
                 modifiedByClientUuid: 'string',
                 modifiedByUserUuid: 'string',
@@ -74,6 +74,7 @@ describe('resources', () => {
                 href: 'string',
                 kind: ResourceKind.USER,
                 etag: 'string',
+                canWrite: true
             }
         };
 
index a063db9709723bfebd5b7ad94e4c2777d0fda34f..3f71140497f7c5df566ef096fb75afc23afcbe0f 100644 (file)
@@ -17,6 +17,11 @@ export const getResourceWithEditableStatus = <T extends EditableResource & Group
 
         if (resource) {
             resource.isEditable = resource.canWrite;
+
+            if (!resource.isEditable && state[resource.ownerUuid]) {
+                const resourceOwner = JSON.parse(JSON.stringify(state[resource.ownerUuid] as T));
+                resource.isEditable = resourceOwner.canWrite;
+            }
         }
 
         return resource;