X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f63f3a5360ae6381d4b332bf86ef52b4e22107fb..f63db3e0224e57695adb2c5fa975586065f6669f:/src/store/resources/resources.ts?ds=sidebyside diff --git a/src/store/resources/resources.ts b/src/store/resources/resources.ts index 10c82ffe7f..bf82fac12d 100644 --- a/src/store/resources/resources.ts +++ b/src/store/resources/resources.ts @@ -2,11 +2,29 @@ // // 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 { GroupResource } from "models/group"; export type ResourcesState = { [key: string]: Resource }; +export const getResourceWithEditableStatus = (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 = (id: string) => (state: ResourcesState): T | undefined => state[id] as T;