Add status in trust center access tab

Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
Émile Ré
2025-12-08 16:26:03 +01:00
parent f5f60992e8
commit 30011f4eb2
6 changed files with 57 additions and 86 deletions

View File

@@ -112,6 +112,7 @@ export const loadTrustCenterAccessDocumentAccessesQuery = graphql`
node {
active
requested
status
document {
id
title

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<ef22c40e1c881ddd440a0468bae615f9>>
* @generated SignedSource<<bf1055f4f2fe5eb7a428afdd30f4f672>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -10,6 +10,7 @@
import { ConcreteRequest } from 'relay-runtime';
export type DocumentType = "ISMS" | "OTHER" | "POLICY" | "PROCEDURE";
export type TrustCenterDocumentAccessStatus = "GRANTED" | "REJECTED" | "REQUESTED" | "REVOKED";
export type TrustCenterAccessGraphLoadDocumentAccessesQuery$variables = {
accessId: string;
};
@@ -35,6 +36,7 @@ export type TrustCenterAccessGraphLoadDocumentAccessesQuery$data = {
readonly id: string;
} | null | undefined;
readonly requested: boolean;
readonly status: TrustCenterDocumentAccessStatus;
readonly trustCenterFile: {
readonly category: string;
readonly id: string;
@@ -103,6 +105,13 @@ v5 = {
"storageKey": null
},
v6 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "status",
"storageKey": null
},
v7 = {
"alias": null,
"args": null,
"concreteType": "Document",
@@ -128,21 +137,21 @@ v6 = {
],
"storageKey": null
},
v7 = {
v8 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "filename",
"storageKey": null
},
v8 = {
v9 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
v9 = {
v10 = {
"alias": null,
"args": null,
"concreteType": "TrustCenterFile",
@@ -151,7 +160,7 @@ v9 = {
"plural": false,
"selections": [
(v2/*: any*/),
(v8/*: any*/),
(v9/*: any*/),
{
"alias": null,
"args": null,
@@ -208,6 +217,7 @@ return {
(v4/*: any*/),
(v5/*: any*/),
(v6/*: any*/),
(v7/*: any*/),
{
"alias": null,
"args": null,
@@ -217,7 +227,7 @@ return {
"plural": false,
"selections": [
(v2/*: any*/),
(v7/*: any*/),
(v8/*: any*/),
{
"alias": null,
"args": null,
@@ -235,7 +245,7 @@ return {
"name": "framework",
"plural": false,
"selections": [
(v8/*: any*/)
(v9/*: any*/)
],
"storageKey": null
}
@@ -245,7 +255,7 @@ return {
],
"storageKey": null
},
(v9/*: any*/)
(v10/*: any*/)
],
"storageKey": null
}
@@ -318,6 +328,7 @@ return {
(v4/*: any*/),
(v5/*: any*/),
(v6/*: any*/),
(v7/*: any*/),
{
"alias": null,
"args": null,
@@ -327,7 +338,7 @@ return {
"plural": false,
"selections": [
(v2/*: any*/),
(v7/*: any*/),
(v8/*: any*/),
{
"alias": null,
"args": null,
@@ -345,7 +356,7 @@ return {
"name": "framework",
"plural": false,
"selections": [
(v8/*: any*/),
(v9/*: any*/),
(v2/*: any*/)
],
"storageKey": null
@@ -356,7 +367,7 @@ return {
],
"storageKey": null
},
(v9/*: any*/)
(v10/*: any*/)
],
"storageKey": null
}
@@ -376,16 +387,16 @@ return {
]
},
"params": {
"cacheID": "50de5f19f1c13ee4d4a0b125231b989f",
"cacheID": "a764b27e48509dfdf4a7a03c5f00ea59",
"id": null,
"metadata": {},
"name": "TrustCenterAccessGraphLoadDocumentAccessesQuery",
"operationKind": "query",
"text": "query TrustCenterAccessGraphLoadDocumentAccessesQuery(\n $accessId: ID!\n) {\n node(id: $accessId) {\n __typename\n ... on TrustCenterAccess {\n id\n availableDocumentAccesses(first: 100, orderBy: {field: CREATED_AT, direction: DESC}) {\n edges {\n node {\n active\n requested\n document {\n id\n title\n documentType\n }\n report {\n id\n filename\n audit {\n id\n framework {\n name\n id\n }\n }\n }\n trustCenterFile {\n id\n name\n category\n }\n }\n }\n }\n }\n id\n }\n}\n"
"text": "query TrustCenterAccessGraphLoadDocumentAccessesQuery(\n $accessId: ID!\n) {\n node(id: $accessId) {\n __typename\n ... on TrustCenterAccess {\n id\n availableDocumentAccesses(first: 100, orderBy: {field: CREATED_AT, direction: DESC}) {\n edges {\n node {\n active\n requested\n status\n document {\n id\n title\n documentType\n }\n report {\n id\n filename\n audit {\n id\n framework {\n name\n id\n }\n }\n }\n trustCenterFile {\n id\n name\n category\n }\n }\n }\n }\n }\n id\n }\n}\n"
}
};
})();
(node as any).hash = "64c69558e335d4cecb14192d8c5b66b8";
(node as any).hash = "f40dbb607d0bd5adb85b0a8377b96b32";
export default node;

View File

@@ -82,6 +82,7 @@ type ContextType = {
type DocumentAccessInfo = {
active: boolean;
status: string;
requested: boolean;
document?: {
id: string;
@@ -185,7 +186,7 @@ export default function TrustCenterAccessTab() {
setIsLoadingDocumentAccesses(false);
}, []);
const formattedDocumentAccesses = editingDocumentAccesses
const formattedDocumentAccesses: NonNullable<ReturnType<typeof getDocumentAccessInfo>>[] = editingDocumentAccesses
?.map((docAccess) => getDocumentAccessInfo(docAccess, __))
?.filter((info) => info !== null) ?? [];
@@ -210,6 +211,7 @@ export default function TrustCenterAccessTab() {
id: docAccess.document?.id,
requested: docAccess.requested,
active: docAccess.active,
status: docAccess.status,
};
}
if (docAccess.report) {
@@ -221,6 +223,7 @@ export default function TrustCenterAccessTab() {
id: docAccess.report?.id,
requested: docAccess.requested,
active: docAccess.active,
status: docAccess.status,
};
}
if (docAccess.trustCenterFile) {
@@ -232,10 +235,11 @@ export default function TrustCenterAccessTab() {
id: docAccess.trustCenterFile?.id,
requested: docAccess.requested,
active: docAccess.active,
status: docAccess.status,
};
}
return null;
throw new Error("Unknown trust center access document type");
}
type AccessType = {
@@ -638,17 +642,15 @@ export default function TrustCenterAccessTab() {
<Th>{__("Name")}</Th>
<Th>{__("Type")}</Th>
<Th>{__("Category")}</Th>
<Th></Th>
<Th>
<div className="flex justify-end">
{__("Access")}
</div>
{__("Access")}
</Th>
<Th></Th>
</Tr>
</Thead>
<Tbody>
{formattedDocumentAccesses.map((info) => {
const { variant, name, type, category, id, requested } = info;
const { variant, name, type, category, id, status } = info;
return (
<Tr key={id}>
@@ -668,20 +670,13 @@ export default function TrustCenterAccessTab() {
</div>
</Td>
<Td>
{requested && (
<Badge variant="warning">
{__("Requested")}
</Badge>
)}
<Badge variant="info">
{status}
</Badge>
</Td>
<Td>
<div className="flex justify-end">
<Checkbox
checked={selectedDocumentAccesses.has(id)}
onChange={(active) => {
if (id) handleToggleDocumentAccess(id, active);
}}
/>
<Button onClick={() => handleToggleDocumentAccess(id, true)}>Grant</Button>
</div>
</Td>
</Tr>