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>

View File

@@ -2224,8 +2224,6 @@ type TrustCenterAccessResolver interface {
AvailableDocumentAccesses(ctx context.Context, obj *types.TrustCenterAccess, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrderBy[coredata.TrustCenterDocumentAccessOrderField]) (*types.TrustCenterDocumentAccessConnection, error)
}
type TrustCenterDocumentAccessResolver interface {
Status(ctx context.Context, obj *types.TrustCenterDocumentAccess) (coredata.TrustCenterDocumentAccessStatus, error)
Document(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Document, error)
Report(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Report, error)
TrustCenterFile(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.TrustCenterFile, error)
@@ -47161,7 +47159,7 @@ func (ec *executionContext) _TrustCenterDocumentAccess_status(ctx context.Contex
field,
ec.fieldContext_TrustCenterDocumentAccess_status,
func(ctx context.Context) (any, error) {
return ec.resolvers.TrustCenterDocumentAccess().Status(ctx, obj)
return obj.Status, nil
},
nil,
ec.marshalNTrustCenterDocumentAccessStatus2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterDocumentAccessStatus,
@@ -47174,8 +47172,8 @@ func (ec *executionContext) fieldContext_TrustCenterDocumentAccess_status(_ cont
fc = &graphql.FieldContext{
Object: "TrustCenterDocumentAccess",
Field: field,
IsMethod: true,
IsResolver: true,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type TrustCenterDocumentAccessStatus does not have child fields")
},
@@ -78827,41 +78825,10 @@ func (ec *executionContext) _TrustCenterDocumentAccess(ctx context.Context, sel
atomic.AddUint32(&out.Invalids, 1)
}
case "status":
field := field
innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
defer func() {
if r := recover(); r != nil {
ec.Error(ctx, ec.Recover(ctx, r))
}
}()
res = ec._TrustCenterDocumentAccess_status(ctx, field, obj)
if res == graphql.Null {
atomic.AddUint32(&fs.Invalids, 1)
}
return res
out.Values[i] = ec._TrustCenterDocumentAccess_status(ctx, field, obj)
if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1)
}
if field.Deferrable != nil {
dfs, ok := deferred[field.Deferrable.Label]
di := 0
if ok {
dfs.AddField(field)
di = len(dfs.Values) - 1
} else {
dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
deferred[field.Deferrable.Label] = dfs
}
dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
return innerFunc(ctx, dfs)
})
// don't run the out.Concurrently() call below
out.Values[i] = graphql.Null
continue
}
out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
case "requested":
out.Values[i] = ec._TrustCenterDocumentAccess_requested(ctx, field, obj)
if out.Values[i] == graphql.Null {

View File

@@ -35,16 +35,17 @@ type (
}
TrustCenterDocumentAccess struct {
ID gid.GID `json:"id"`
OrganizationID gid.GID `json:"-"`
Active bool `json:"active"`
Requested bool `json:"requested"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
TrustCenterAccess *TrustCenterAccess `json:"trustCenterAccess"`
Document *Document `json:"document,omitempty"`
Report *Report `json:"report,omitempty"`
TrustCenterFile *TrustCenterFile `json:"trustCenterFile,omitempty"`
ID gid.GID `json:"id"`
OrganizationID gid.GID `json:"-"`
Active bool `json:"active"`
Status coredata.TrustCenterDocumentAccessStatus `json:"status"`
Requested bool `json:"requested"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
TrustCenterAccess *TrustCenterAccess `json:"trustCenterAccess"`
Document *Document `json:"document,omitempty"`
Report *Report `json:"report,omitempty"`
TrustCenterFile *TrustCenterFile `json:"trustCenterFile,omitempty"`
// Internal fields used by resolvers
TrustCenterAccessID gid.GID `json:"-"`
@@ -59,6 +60,7 @@ func NewTrustCenterDocumentAccess(tcda *coredata.TrustCenterDocumentAccess) *Tru
ID: tcda.ID,
OrganizationID: tcda.OrganizationID,
Active: tcda.Active,
Status: tcda.Status,
Requested: tcda.Requested,
CreatedAt: tcda.CreatedAt,
UpdatedAt: tcda.UpdatedAt,

View File

@@ -6492,11 +6492,6 @@ func (r *trustCenterAccessResolver) AvailableDocumentAccesses(ctx context.Contex
return types.NewTrustCenterDocumentAccessConnection(result, obj, obj.ID), nil
}
// Status is the resolver for the status field.
func (r *trustCenterDocumentAccessResolver) Status(ctx context.Context, obj *types.TrustCenterDocumentAccess) (coredata.TrustCenterDocumentAccessStatus, error) {
panic(fmt.Errorf("not implemented: Status - status"))
}
// Document is the resolver for the document field.
func (r *trustCenterDocumentAccessResolver) Document(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Document, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGet)