Make console buildable by removing people related GQL queries

Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
Émile Ré
2026-02-05 19:50:03 +04:00
parent d7e1703ff3
commit 6b4185aa9b
102 changed files with 539 additions and 2039 deletions

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<9e2e93809320c103f393c0e1e0ae3e27>>
* @generated SignedSource<<00aac6481455fe9181413e7d94c7c58d>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -139,7 +139,7 @@ v5 = {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<ff88330f4c9b747f6936824eea6d0b54>>
* @generated SignedSource<<af44da038138042816e5c6b5c02d99b1>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -210,7 +210,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<6da31497d94651dbbe2bbaa4da7f541b>>
* @generated SignedSource<<8a1ec965a1f463c40cc4475b58428c13>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -107,7 +107,7 @@ v7 = {
v8 = {
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<383e1cf1a7ebdac22de46fbc694566fe>>
* @generated SignedSource<<8fa12501ce4c5a9013357bfa3ee4ff72>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -131,7 +131,7 @@ v3 = [
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<26fe2860690fb0293c685dbc139eed04>>
* @generated SignedSource<<aaeb183de2ac35b0a7e60807a0668a4b>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -139,7 +139,7 @@ v4 = {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<4e8617c8aeee3cf066e40053ba260a61>>
* @generated SignedSource<<49e756ac3a9fccad3bf6ab987a2bc3f0>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -237,7 +237,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<7b00b5b2a993258ddb345ad0ee9bbe35>>
* @generated SignedSource<<de59e2946a6bad7169773cfd1b2a553c>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -125,7 +125,7 @@ v10 = {
v11 = {
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<8f25fa0f640847e45cf45de0028f51fe>>
* @generated SignedSource<<3fe464d047c80b94afdf64dc9cf2e23c>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -131,7 +131,7 @@ v2 = [
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<96a4e00e0e084578f763cf56aa89de2e>>
* @generated SignedSource<<0a69c39376077a358486998d7be82316>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -216,7 +216,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<a1caf481759576bb7bea347f130c3357>>
* @generated SignedSource<<6562480e22245dec8b85b0ac79dd5a98>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -245,7 +245,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<40817b8ba263ba9d0140a57e41e6ca44>>
* @generated SignedSource<<922a06289e517787e87d62f788a0cbd7>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -211,7 +211,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<69b7a1ed2ab1c03ffa4c42638851e3bd>>
* @generated SignedSource<<2c421e02bc469a3b76ffdf2761d67af3>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -108,7 +108,7 @@ v4 = {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "attendees",
"plural": true,

View File

@@ -1,234 +0,0 @@
/**
* @generated SignedSource<<bcaedd6b49db8b0f1f39149e8c916c26>>
* @lightSyntaxTransform
* @nogrep
*/
/* tslint:disable */
/* eslint-disable */
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
export type PeopleKind = "CONTRACTOR" | "EMPLOYEE" | "SERVICE_ACCOUNT";
export type CreatePeopleInput = {
additionalEmailAddresses: ReadonlyArray<string>;
contractEndDate?: string | null | undefined;
contractStartDate?: string | null | undefined;
fullName: string;
kind: PeopleKind;
organizationId: string;
position?: string | null | undefined;
primaryEmailAddress: string;
};
export type CreatePeopleDialogMutation$variables = {
connections: ReadonlyArray<string>;
input: CreatePeopleInput;
};
export type CreatePeopleDialogMutation$data = {
readonly createPeople: {
readonly peopleEdge: {
readonly node: {
readonly additionalEmailAddresses: ReadonlyArray<string>;
readonly canDelete: boolean;
readonly canUpdate: boolean;
readonly fullName: string;
readonly id: string;
readonly kind: PeopleKind;
readonly position: string | null | undefined;
readonly primaryEmailAddress: string;
};
};
};
};
export type CreatePeopleDialogMutation = {
response: CreatePeopleDialogMutation$data;
variables: CreatePeopleDialogMutation$variables;
};
const node: ConcreteRequest = (function(){
var v0 = {
"defaultValue": null,
"kind": "LocalArgument",
"name": "connections"
},
v1 = {
"defaultValue": null,
"kind": "LocalArgument",
"name": "input"
},
v2 = [
{
"kind": "Variable",
"name": "input",
"variableName": "input"
}
],
v3 = {
"alias": null,
"args": null,
"concreteType": "PeopleEdge",
"kind": "LinkedField",
"name": "peopleEdge",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "People",
"kind": "LinkedField",
"name": "node",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "primaryEmailAddress",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "position",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "kind",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "additionalEmailAddresses",
"storageKey": null
},
{
"alias": "canDelete",
"args": [
{
"kind": "Literal",
"name": "action",
"value": "core:people:delete"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:delete\")"
},
{
"alias": "canUpdate",
"args": [
{
"kind": "Literal",
"name": "action",
"value": "core:people:update"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:update\")"
}
],
"storageKey": null
}
],
"storageKey": null
};
return {
"fragment": {
"argumentDefinitions": [
(v0/*: any*/),
(v1/*: any*/)
],
"kind": "Fragment",
"metadata": null,
"name": "CreatePeopleDialogMutation",
"selections": [
{
"alias": null,
"args": (v2/*: any*/),
"concreteType": "CreatePeoplePayload",
"kind": "LinkedField",
"name": "createPeople",
"plural": false,
"selections": [
(v3/*: any*/)
],
"storageKey": null
}
],
"type": "Mutation",
"abstractKey": null
},
"kind": "Request",
"operation": {
"argumentDefinitions": [
(v1/*: any*/),
(v0/*: any*/)
],
"kind": "Operation",
"name": "CreatePeopleDialogMutation",
"selections": [
{
"alias": null,
"args": (v2/*: any*/),
"concreteType": "CreatePeoplePayload",
"kind": "LinkedField",
"name": "createPeople",
"plural": false,
"selections": [
(v3/*: any*/),
{
"alias": null,
"args": null,
"filters": null,
"handle": "prependEdge",
"key": "",
"kind": "LinkedHandle",
"name": "peopleEdge",
"handleArgs": [
{
"kind": "Variable",
"name": "connections",
"variableName": "connections"
}
]
}
],
"storageKey": null
}
]
},
"params": {
"cacheID": "a37ebdda62d99a7583f4082b1fe19c96",
"id": null,
"metadata": {},
"name": "CreatePeopleDialogMutation",
"operationKind": "mutation",
"text": "mutation CreatePeopleDialogMutation(\n $input: CreatePeopleInput!\n) {\n createPeople(input: $input) {\n peopleEdge {\n node {\n id\n fullName\n primaryEmailAddress\n position\n kind\n additionalEmailAddresses\n canDelete: permission(action: \"core:people:delete\")\n canUpdate: permission(action: \"core:people:update\")\n }\n }\n }\n}\n"
}
};
})();
(node as any).hash = "d0ba45c21175b69c272a4bf9ff3c4039";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<d7c683ae93252e6615c66851edf88d62>>
* @generated SignedSource<<da2705a13a054ce24ef85a49e734c2f9>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -251,7 +251,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<f35cab66f0cb7f4cc802c4f74db09164>>
* @generated SignedSource<<fcac33ad88cb95b744302e08e77075a3>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -180,7 +180,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<1ca264e989f4edf7a41ac69c09e014d6>>
* @generated SignedSource<<ab09b8693f7f7e20e0a8f516a8b01017>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -113,7 +113,7 @@ v5 = {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<8d632b2e4ce8734fd47c3b2251cd61b9>>
* @generated SignedSource<<99134677b485c7ba80891aad922e354a>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -94,7 +94,7 @@ v5 = {
v6 = {
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<34155e0367247c7503956fc623839d7f>>
* @generated SignedSource<<ecbf9d50052f38b01da0070fcda43010>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -105,7 +105,7 @@ v3 = [
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<c7800005b8fa0b1fed16590751fb1b27>>
* @generated SignedSource<<334e066f78a528494ef5c68d088c002a>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -98,7 +98,7 @@ v2 = [
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<e86ed1b94b49ab62d46e4394739f1e70>>
* @generated SignedSource<<02a8fd2b19d7f7fdc180b373fa0b17c9>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -55,7 +55,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<50f02328ff252b0ce2af4637d8f002c7>>
* @generated SignedSource<<de8021b4f5b3813e939cdcd787fb254c>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -277,7 +277,7 @@ v19 = {
v20 = {
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<b6234102a57c0c233979c0bc51c2b49c>>
* @generated SignedSource<<7dc6855a815d76f559d0efe4a8b34c66>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -119,7 +119,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<cc067af7afb25c6ce54e3915100c371e>>
* @generated SignedSource<<c4186b06367f737c6cb7977780eeaaad>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -43,7 +43,7 @@ const node: ReaderFragment = {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "signedBy",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<bb1622f78ea11c986acbd844bfc5c463>>
* @generated SignedSource<<c8559b76173b328f86973840e35312a5>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -197,7 +197,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "signedBy",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<3b60ebae6765024147f97c157f6251fe>>
* @generated SignedSource<<9d5bb5c52a22efeea7cc554200a7a153>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -11,7 +11,7 @@
import { ReaderFragment } from 'relay-runtime';
import { FragmentRefs } from "relay-runtime";
export type DocumentSignatureList_peopleFragment$data = {
readonly people: {
readonly profiles: {
readonly edges: ReadonlyArray<{
readonly node: {
readonly id: string;
@@ -45,7 +45,7 @@ const node: ReaderFragment = {
"name": "DocumentSignaturePlaceholder_organizationFragment"
},
{
"alias": "people",
"alias": null,
"args": [
{
"kind": "Variable",
@@ -66,15 +66,15 @@ const node: ReaderFragment = {
}
}
],
"concreteType": "PeopleConnection",
"concreteType": "ProfileConnection",
"kind": "LinkedField",
"name": "peoples",
"name": "profiles",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "PeopleEdge",
"concreteType": "ProfileEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
@@ -82,7 +82,7 @@ const node: ReaderFragment = {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "node",
"plural": false,
@@ -113,6 +113,6 @@ const node: ReaderFragment = {
"abstractKey": null
};
(node as any).hash = "6c0a2b965d1440c2e0fd8ec9ce3c5e85";
(node as any).hash = "cf9788ef7f8667bb436ef3776618d3f3";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<be6672740e1e23819b1d248d7e05d7ad>>
* @generated SignedSource<<628394c29c246b6018084f14b3c0000b>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -133,7 +133,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "signedBy",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<5a43f6367b3b03e57c58a1ab616e867b>>
* @generated SignedSource<<10302f020070a7ab64ab93115a4b916b>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -11,9 +11,9 @@
import { ReaderFragment } from 'relay-runtime';
import { FragmentRefs } from "relay-runtime";
export type DocumentSignaturePlaceholder_personFragment$data = {
readonly emailAddress: string;
readonly fullName: string;
readonly id: string;
readonly primaryEmailAddress: string;
readonly " $fragmentType": "DocumentSignaturePlaceholder_personFragment";
};
export type DocumentSignaturePlaceholder_personFragment$key = {
@@ -45,14 +45,14 @@ const node: ReaderFragment = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "primaryEmailAddress",
"name": "emailAddress",
"storageKey": null
}
],
"type": "People",
"type": "Profile",
"abstractKey": null
};
(node as any).hash = "4b77b54fc11c37a0e1c50f4d482b0f18";
(node as any).hash = "cbbb481145654dbf42e18ca46ec040fb";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<f83e7d173f4c2d46a2a6b193e458dee0>>
* @generated SignedSource<<e9fedeb822edc0b01bc54ec76a816761>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -180,7 +180,7 @@ v13 = {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "signedBy",
"plural": false,
@@ -431,7 +431,7 @@ return {
"storageKey": "permission(action:\"core:document-version:request-signature\")"
},
{
"alias": "people",
"alias": null,
"args": [
(v3/*: any*/),
(v8/*: any*/),
@@ -444,15 +444,15 @@ return {
}
}
],
"concreteType": "PeopleConnection",
"concreteType": "ProfileConnection",
"kind": "LinkedField",
"name": "peoples",
"name": "profiles",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "PeopleEdge",
"concreteType": "ProfileEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
@@ -460,7 +460,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "node",
"plural": false,
@@ -471,7 +471,7 @@ return {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "primaryEmailAddress",
"name": "emailAddress",
"storageKey": null
}
],
@@ -481,7 +481,7 @@ return {
"storageKey": null
}
],
"storageKey": "peoples(filter:{\"excludeContractEnded\":true},first:1000,orderBy:{\"direction\":\"ASC\",\"field\":\"FULL_NAME\"})"
"storageKey": "profiles(filter:{\"excludeContractEnded\":true},first:1000,orderBy:{\"direction\":\"ASC\",\"field\":\"FULL_NAME\"})"
}
],
"type": "Organization",
@@ -588,12 +588,12 @@ return {
]
},
"params": {
"cacheID": "a14fdbc42e1aa20bbe0dc24680404388",
"cacheID": "7aa234078557c0ee417530dcbebba110",
"id": null,
"metadata": {},
"name": "DocumentSignaturesPageQuery",
"operationKind": "query",
"text": "query DocumentSignaturesPageQuery(\n $documentId: ID!\n $organizationId: ID!\n $versionId: ID!\n $versionSpecified: Boolean!\n) {\n organization: node(id: $organizationId) {\n __typename\n ...DocumentSignatureList_peopleFragment_4oWXMW\n id\n }\n document: node(id: $documentId) @skip(if: $versionSpecified) {\n __typename\n ... on Document {\n lastVersion: versions(first: 1, orderBy: {field: CREATED_AT, direction: DESC}) {\n edges {\n node {\n ...DocumentSignatureList_versionFragment\n id\n }\n }\n }\n }\n id\n }\n version: node(id: $versionId) @include(if: $versionSpecified) {\n __typename\n ...DocumentSignatureList_versionFragment\n id\n }\n}\n\nfragment DocumentSignatureListItemFragment on DocumentVersionSignature {\n id\n signedBy {\n fullName\n id\n }\n state\n signedAt\n requestedAt\n canCancel: permission(action: \"core:document-version-signature:cancel\")\n}\n\nfragment DocumentSignatureList_peopleFragment_4oWXMW on Organization {\n ...DocumentSignaturePlaceholder_organizationFragment\n people: peoples(first: 1000, orderBy: {direction: ASC, field: FULL_NAME}, filter: {excludeContractEnded: true}) {\n edges {\n node {\n id\n ...DocumentSignaturePlaceholder_personFragment\n }\n }\n }\n}\n\nfragment DocumentSignatureList_versionFragment on DocumentVersion {\n ...DocumentSignaturePlaceholder_versionFragment\n signatures(first: 1000) {\n edges {\n node {\n id\n signedBy {\n id\n }\n ...DocumentSignatureListItemFragment\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n id\n}\n\nfragment DocumentSignaturePlaceholder_organizationFragment on Organization {\n canRequestSignature: permission(action: \"core:document-version:request-signature\")\n}\n\nfragment DocumentSignaturePlaceholder_personFragment on People {\n id\n fullName\n primaryEmailAddress\n}\n\nfragment DocumentSignaturePlaceholder_versionFragment on DocumentVersion {\n id\n status\n}\n"
"text": "query DocumentSignaturesPageQuery(\n $documentId: ID!\n $organizationId: ID!\n $versionId: ID!\n $versionSpecified: Boolean!\n) {\n organization: node(id: $organizationId) {\n __typename\n ...DocumentSignatureList_peopleFragment_4oWXMW\n id\n }\n document: node(id: $documentId) @skip(if: $versionSpecified) {\n __typename\n ... on Document {\n lastVersion: versions(first: 1, orderBy: {field: CREATED_AT, direction: DESC}) {\n edges {\n node {\n ...DocumentSignatureList_versionFragment\n id\n }\n }\n }\n }\n id\n }\n version: node(id: $versionId) @include(if: $versionSpecified) {\n __typename\n ...DocumentSignatureList_versionFragment\n id\n }\n}\n\nfragment DocumentSignatureListItemFragment on DocumentVersionSignature {\n id\n signedBy {\n fullName\n id\n }\n state\n signedAt\n requestedAt\n canCancel: permission(action: \"core:document-version-signature:cancel\")\n}\n\nfragment DocumentSignatureList_peopleFragment_4oWXMW on Organization {\n ...DocumentSignaturePlaceholder_organizationFragment\n profiles(first: 1000, orderBy: {direction: ASC, field: FULL_NAME}, filter: {excludeContractEnded: true}) {\n edges {\n node {\n id\n ...DocumentSignaturePlaceholder_personFragment\n }\n }\n }\n}\n\nfragment DocumentSignatureList_versionFragment on DocumentVersion {\n ...DocumentSignaturePlaceholder_versionFragment\n signatures(first: 1000) {\n edges {\n node {\n id\n signedBy {\n id\n }\n ...DocumentSignatureListItemFragment\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n id\n}\n\nfragment DocumentSignaturePlaceholder_organizationFragment on Organization {\n canRequestSignature: permission(action: \"core:document-version:request-signature\")\n}\n\nfragment DocumentSignaturePlaceholder_personFragment on Profile {\n id\n fullName\n emailAddress\n}\n\nfragment DocumentSignaturePlaceholder_versionFragment on DocumentVersion {\n id\n status\n}\n"
}
};
})();

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<582e2fb7616b46350bf9dbce26c62811>>
* @generated SignedSource<<65c0e47a4a410a9ec6f917ec991f8ae9>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -299,7 +299,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<dfc4b37cf499f7cb24c0b1bd1eec3b11>>
* @generated SignedSource<<645072360dd4172625d01052118e7f8f>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -233,7 +233,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<4122b3e15107bc0f2c5f8b842b882603>>
* @generated SignedSource<<c7153d76054821957556ac597dd4b7b9>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -202,7 +202,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<b06f8ea18b076203f2e1ab8bae17d45f>>
* @generated SignedSource<<4744f325593bfe652352407dd9ee6e5c>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -176,7 +176,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<d261778fb5f73fe795e672f0a5eac819>>
* @generated SignedSource<<0c1816374b8fe7e0c0c79e9013aeb2b4>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -961,7 +961,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<da4cb1788d09bf3876d561062ad92880>>
* @generated SignedSource<<24418ddf18ae4992b58f744247037b46>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -305,7 +305,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "businessOwner",
"plural": false,
@@ -315,7 +315,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "securityOwner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<1126620dba70ca7a331c00347217eaa8>>
* @generated SignedSource<<f5cbc176c2905c2eed828f946fc581c1>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -71,7 +71,7 @@ const node: ReaderFragment = {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<4569a09dbc9fbf80fb787da46d0d058f>>
* @generated SignedSource<<ed59b8ffef8d42b667d2073df8ab1557>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -171,7 +171,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<44ee1c9c1b8d060d03736d1703d2a68a>>
* @generated SignedSource<<f9c59bb5e4383c1d9bfa5854ee42004f>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -170,7 +170,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<18d4d04e3149486db39e2376613f845a>>
* @generated SignedSource<<adfc8b4c8d74772589ac7d365270a615>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -243,7 +243,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<02d4857a47adc2625d9cbdca077ea713>>
* @generated SignedSource<<6804811557c4369cfc98c1d18ce6a668>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -93,7 +93,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "attendees",
"plural": true,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<6e51f615961af796c6bd13eb3cf0b305>>
* @generated SignedSource<<cd06e77586ebdd55649cf07671903b0a>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -107,7 +107,7 @@ v4 = {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "attendees",
"plural": true,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<f2352b27b79021bcd62b36ef246bc084>>
* @generated SignedSource<<c417591e528a7c10a3e5d47fd288cc29>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -101,7 +101,7 @@ v2 = [
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "attendees",
"plural": true,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<6d71d2d88b695492ef93e2b213fc14d3>>
* @generated SignedSource<<afe46bc950154e402b4f778be2c08bc5>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -250,7 +250,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "attendees",
"plural": true,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<e8de023c889edc6ca714311bf3249ddf>>
* @generated SignedSource<<81e8e025976a7d356fa1da47465d8ad0>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -58,7 +58,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "attendees",
"plural": true,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<995f84eb7ea5dddf0b3166230a9a969e>>
* @generated SignedSource<<9820e4e8cd9f971dfd45dbd61643ac41>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -264,7 +264,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<464a73547f605ed418f7e4e87b65032b>>
* @generated SignedSource<<387d8e19371a771747334f0c6499ea76>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -285,7 +285,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<38092f8f7826b528d94c597c1edfb150>>
* @generated SignedSource<<1c0b47ff7df79ff30d8f4c3a6138d972>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -137,7 +137,7 @@ v10 = {
v11 = {
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<0da0e157ba973f1ae3e2a60d750b8c0d>>
* @generated SignedSource<<8c7e1d681649a3b5981a153314c2325a>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -277,7 +277,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<6a3589d799bf9319227833a4356864b2>>
* @generated SignedSource<<b771321adc35ef32afc60e1b3e0f2a58>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -171,7 +171,7 @@ v13 = {
v14 = {
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<b167add8ba44f61fd813e211d2d29c05>>
* @generated SignedSource<<86c2716d4118ff957765ad2e0577fb05>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -156,7 +156,7 @@ v2 = [
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<1f23de4809b353b4b807c3fa85146bf4>>
* @generated SignedSource<<d90e9f750cd80016d1452ddec1f4cd99>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -166,7 +166,7 @@ v4 = {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<02e8a94b4b1fde8cf24235afcfd5731a>>
* @generated SignedSource<<6354faea87e32321c5dcef5b680368cb>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -251,7 +251,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<200a1aba470ed72c73e3542bdc907315>>
* @generated SignedSource<<b29dcd30259f1ce7a4c234cdbb45c855>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -149,7 +149,7 @@ v13 = {
v14 = {
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<a66add339f1e2e2d4b26b8c963ccd849>>
* @generated SignedSource<<0ef675f01e4aafdf896e61b3692f153b>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -158,7 +158,7 @@ v2 = [
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<d603ca6d1736b916a464f3371df7024d>>
* @generated SignedSource<<4611e8aacfc076bb2acc228152317ba8>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -231,7 +231,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<1ac1cfaaf7028d5f1a6f1daf69290cdc>>
* @generated SignedSource<<f6cb4225acc7d3809c516d6ed72417ac>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -259,7 +259,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,132 +0,0 @@
/**
* @generated SignedSource<<242c546027e5b7c8410fca920a4dfa3c>>
* @lightSyntaxTransform
* @nogrep
*/
/* tslint:disable */
/* eslint-disable */
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
export type DeletePeopleInput = {
peopleId: string;
};
export type PeopleGraphDeleteMutation$variables = {
connections: ReadonlyArray<string>;
input: DeletePeopleInput;
};
export type PeopleGraphDeleteMutation$data = {
readonly deletePeople: {
readonly deletedPeopleId: string;
};
};
export type PeopleGraphDeleteMutation = {
response: PeopleGraphDeleteMutation$data;
variables: PeopleGraphDeleteMutation$variables;
};
const node: ConcreteRequest = (function(){
var v0 = {
"defaultValue": null,
"kind": "LocalArgument",
"name": "connections"
},
v1 = {
"defaultValue": null,
"kind": "LocalArgument",
"name": "input"
},
v2 = [
{
"kind": "Variable",
"name": "input",
"variableName": "input"
}
],
v3 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "deletedPeopleId",
"storageKey": null
};
return {
"fragment": {
"argumentDefinitions": [
(v0/*: any*/),
(v1/*: any*/)
],
"kind": "Fragment",
"metadata": null,
"name": "PeopleGraphDeleteMutation",
"selections": [
{
"alias": null,
"args": (v2/*: any*/),
"concreteType": "DeletePeoplePayload",
"kind": "LinkedField",
"name": "deletePeople",
"plural": false,
"selections": [
(v3/*: any*/)
],
"storageKey": null
}
],
"type": "Mutation",
"abstractKey": null
},
"kind": "Request",
"operation": {
"argumentDefinitions": [
(v1/*: any*/),
(v0/*: any*/)
],
"kind": "Operation",
"name": "PeopleGraphDeleteMutation",
"selections": [
{
"alias": null,
"args": (v2/*: any*/),
"concreteType": "DeletePeoplePayload",
"kind": "LinkedField",
"name": "deletePeople",
"plural": false,
"selections": [
(v3/*: any*/),
{
"alias": null,
"args": null,
"filters": null,
"handle": "deleteEdge",
"key": "",
"kind": "ScalarHandle",
"name": "deletedPeopleId",
"handleArgs": [
{
"kind": "Variable",
"name": "connections",
"variableName": "connections"
}
]
}
],
"storageKey": null
}
]
},
"params": {
"cacheID": "9e0f5fd398468199333312505f258bb2",
"id": null,
"metadata": {},
"name": "PeopleGraphDeleteMutation",
"operationKind": "mutation",
"text": "mutation PeopleGraphDeleteMutation(\n $input: DeletePeopleInput!\n) {\n deletePeople(input: $input) {\n deletedPeopleId\n }\n}\n"
}
};
})();
(node as any).hash = "611aa91bbb039c4e5800838f5db7985c";
export default node;

View File

@@ -1,227 +0,0 @@
/**
* @generated SignedSource<<9cdea24323a4e31f80ec9a2327d475d5>>
* @lightSyntaxTransform
* @nogrep
*/
/* tslint:disable */
/* eslint-disable */
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
export type PeopleKind = "CONTRACTOR" | "EMPLOYEE" | "SERVICE_ACCOUNT";
export type PeopleGraphNodeQuery$variables = {
peopleId: string;
};
export type PeopleGraphNodeQuery$data = {
readonly node: {
readonly additionalEmailAddresses?: ReadonlyArray<string>;
readonly canDelete?: boolean;
readonly canUpdate?: boolean;
readonly contractEndDate?: string | null | undefined;
readonly contractStartDate?: string | null | undefined;
readonly fullName?: string;
readonly id?: string;
readonly kind?: PeopleKind;
readonly position?: string | null | undefined;
readonly primaryEmailAddress?: string;
};
};
export type PeopleGraphNodeQuery = {
response: PeopleGraphNodeQuery$data;
variables: PeopleGraphNodeQuery$variables;
};
const node: ConcreteRequest = (function(){
var v0 = [
{
"defaultValue": null,
"kind": "LocalArgument",
"name": "peopleId"
}
],
v1 = [
{
"kind": "Variable",
"name": "id",
"variableName": "peopleId"
}
],
v2 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
v3 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
},
v4 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "primaryEmailAddress",
"storageKey": null
},
v5 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "position",
"storageKey": null
},
v6 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "kind",
"storageKey": null
},
v7 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "additionalEmailAddresses",
"storageKey": null
},
v8 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractStartDate",
"storageKey": null
},
v9 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractEndDate",
"storageKey": null
},
v10 = {
"alias": "canUpdate",
"args": [
{
"kind": "Literal",
"name": "action",
"value": "core:people:update"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:update\")"
},
v11 = {
"alias": "canDelete",
"args": [
{
"kind": "Literal",
"name": "action",
"value": "core:people:delete"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:delete\")"
};
return {
"fragment": {
"argumentDefinitions": (v0/*: any*/),
"kind": "Fragment",
"metadata": null,
"name": "PeopleGraphNodeQuery",
"selections": [
{
"alias": null,
"args": (v1/*: any*/),
"concreteType": null,
"kind": "LinkedField",
"name": "node",
"plural": false,
"selections": [
{
"kind": "InlineFragment",
"selections": [
(v2/*: any*/),
(v3/*: any*/),
(v4/*: any*/),
(v5/*: any*/),
(v6/*: any*/),
(v7/*: any*/),
(v8/*: any*/),
(v9/*: any*/),
(v10/*: any*/),
(v11/*: any*/)
],
"type": "People",
"abstractKey": null
}
],
"storageKey": null
}
],
"type": "Query",
"abstractKey": null
},
"kind": "Request",
"operation": {
"argumentDefinitions": (v0/*: any*/),
"kind": "Operation",
"name": "PeopleGraphNodeQuery",
"selections": [
{
"alias": null,
"args": (v1/*: any*/),
"concreteType": null,
"kind": "LinkedField",
"name": "node",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "__typename",
"storageKey": null
},
(v2/*: any*/),
{
"kind": "InlineFragment",
"selections": [
(v3/*: any*/),
(v4/*: any*/),
(v5/*: any*/),
(v6/*: any*/),
(v7/*: any*/),
(v8/*: any*/),
(v9/*: any*/),
(v10/*: any*/),
(v11/*: any*/)
],
"type": "People",
"abstractKey": null
}
],
"storageKey": null
}
]
},
"params": {
"cacheID": "b770515fd005b877138eaddfa7c1bd2f",
"id": null,
"metadata": {},
"name": "PeopleGraphNodeQuery",
"operationKind": "query",
"text": "query PeopleGraphNodeQuery(\n $peopleId: ID!\n) {\n node(id: $peopleId) {\n __typename\n ... on People {\n id\n fullName\n primaryEmailAddress\n position\n kind\n additionalEmailAddresses\n contractStartDate\n contractEndDate\n canUpdate: permission(action: \"core:people:update\")\n canDelete: permission(action: \"core:people:delete\")\n }\n id\n }\n}\n"
}
};
})();
(node as any).hash = "a2bbe9f5064287c6a6e193c948a2c0cc";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<59393bd95d26b50bb20f933e548497cb>>
* @generated SignedSource<<10bf686b430d7a736370638d91ba0b58>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -9,12 +9,12 @@
// @ts-nocheck
import { ReaderFragment } from 'relay-runtime';
export type PeopleKind = "CONTRACTOR" | "EMPLOYEE" | "SERVICE_ACCOUNT";
export type MembershipProfileKind = "CONTRACTOR" | "EMPLOYEE" | "SERVICE_ACCOUNT";
import { FragmentRefs } from "relay-runtime";
export type PeopleGraphPaginatedFragment$data = {
readonly canCreatePeople: boolean;
readonly id: string;
readonly peoples: {
readonly profiles: {
readonly __id: string;
readonly edges: ReadonlyArray<{
readonly node: {
@@ -23,11 +23,11 @@ export type PeopleGraphPaginatedFragment$data = {
readonly canUpdate: boolean;
readonly contractEndDate: string | null | undefined;
readonly contractStartDate: string | null | undefined;
readonly emailAddress: string;
readonly fullName: string;
readonly id: string;
readonly kind: PeopleKind;
readonly kind: MembershipProfileKind;
readonly position: string | null | undefined;
readonly primaryEmailAddress: string;
};
}>;
};
@@ -42,7 +42,7 @@ import PeopleListQuery_graphql from './PeopleListQuery.graphql';
const node: ReaderFragment = (function(){
var v0 = [
"peoples"
"profiles"
],
v1 = {
"alias": null,
@@ -127,15 +127,15 @@ return {
{
"kind": "Literal",
"name": "action",
"value": "core:people:create"
"value": "iam:membership-profile:create"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:create\")"
"storageKey": "permission(action:\"iam:membership-profile:create\")"
},
{
"alias": "peoples",
"alias": "profiles",
"args": [
{
"kind": "Variable",
@@ -148,15 +148,15 @@ return {
"variableName": "order"
}
],
"concreteType": "PeopleConnection",
"concreteType": "ProfileConnection",
"kind": "LinkedField",
"name": "__PeopleGraphPaginatedQuery_peoples_connection",
"name": "__PeopleGraphPaginatedQuery_profiles_connection",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "PeopleEdge",
"concreteType": "ProfileEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
@@ -164,7 +164,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "node",
"plural": false,
@@ -181,7 +181,7 @@ return {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "primaryEmailAddress",
"name": "emailAddress",
"storageKey": null
},
{
@@ -225,12 +225,12 @@ return {
{
"kind": "Literal",
"name": "action",
"value": "core:people:delete"
"value": "iam:membership-profile:delete"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:delete\")"
"storageKey": "permission(action:\"iam:membership-profile:delete\")"
},
{
"alias": "canUpdate",
@@ -238,12 +238,12 @@ return {
{
"kind": "Literal",
"name": "action",
"value": "core:people:update"
"value": "iam:membership-profile:update"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:update\")"
"storageKey": "permission(action:\"iam:membership-profile:update\")"
},
{
"alias": null,
@@ -326,6 +326,6 @@ return {
};
})();
(node as any).hash = "199e1751362979bcc7e86e1a90a449d4";
(node as any).hash = "00fc3c290ab8526c36804176a79760ca";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<91fb3430f209ed2c0c83b111ca7b3d86>>
* @generated SignedSource<<7ad30234c2f4974391fdf96dc5647c1a>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -128,25 +128,25 @@ return {
{
"kind": "Literal",
"name": "action",
"value": "core:people:create"
"value": "iam:membership-profile:create"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:create\")"
"storageKey": "permission(action:\"iam:membership-profile:create\")"
},
{
"alias": null,
"args": (v4/*: any*/),
"concreteType": "PeopleConnection",
"concreteType": "ProfileConnection",
"kind": "LinkedField",
"name": "peoples",
"name": "profiles",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "PeopleEdge",
"concreteType": "ProfileEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
@@ -154,7 +154,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "node",
"plural": false,
@@ -171,7 +171,7 @@ return {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "primaryEmailAddress",
"name": "emailAddress",
"storageKey": null
},
{
@@ -215,12 +215,12 @@ return {
{
"kind": "Literal",
"name": "action",
"value": "core:people:delete"
"value": "iam:membership-profile:delete"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:delete\")"
"storageKey": "permission(action:\"iam:membership-profile:delete\")"
},
{
"alias": "canUpdate",
@@ -228,12 +228,12 @@ return {
{
"kind": "Literal",
"name": "action",
"value": "core:people:update"
"value": "iam:membership-profile:update"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:update\")"
"storageKey": "permission(action:\"iam:membership-profile:update\")"
},
(v3/*: any*/)
],
@@ -301,7 +301,7 @@ return {
]
}
],
"storageKey": "peoples(first:50,orderBy:{\"direction\":\"ASC\",\"field\":\"FULL_NAME\"})"
"storageKey": "profiles(first:50,orderBy:{\"direction\":\"ASC\",\"field\":\"FULL_NAME\"})"
},
{
"alias": null,
@@ -311,9 +311,9 @@ return {
"filter"
],
"handle": "connection",
"key": "PeopleGraphPaginatedQuery_peoples",
"key": "PeopleGraphPaginatedQuery_profiles",
"kind": "LinkedHandle",
"name": "peoples"
"name": "profiles"
}
],
"type": "Organization",
@@ -325,12 +325,12 @@ return {
]
},
"params": {
"cacheID": "caa828b21b4d035ff5543e6d08355aad",
"cacheID": "aa4bd0870eec87b1f2abc4d5e4569c81",
"id": null,
"metadata": {},
"name": "PeopleGraphPaginatedQuery",
"operationKind": "query",
"text": "query PeopleGraphPaginatedQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n id\n ... on Organization {\n ...PeopleGraphPaginatedFragment\n }\n }\n}\n\nfragment PeopleGraphPaginatedFragment on Organization {\n canCreatePeople: permission(action: \"core:people:create\")\n peoples(first: 50, orderBy: {direction: ASC, field: FULL_NAME}) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n kind\n position\n additionalEmailAddresses\n contractStartDate\n contractEndDate\n canDelete: permission(action: \"core:people:delete\")\n canUpdate: permission(action: \"core:people:update\")\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n"
"text": "query PeopleGraphPaginatedQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n id\n ... on Organization {\n ...PeopleGraphPaginatedFragment\n }\n }\n}\n\nfragment PeopleGraphPaginatedFragment on Organization {\n canCreatePeople: permission(action: \"iam:membership-profile:create\")\n profiles(first: 50, orderBy: {direction: ASC, field: FULL_NAME}) {\n edges {\n node {\n id\n fullName\n emailAddress\n kind\n position\n additionalEmailAddresses\n contractStartDate\n contractEndDate\n canDelete: permission(action: \"iam:membership-profile:delete\")\n canUpdate: permission(action: \"iam:membership-profile:update\")\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n"
}
};
})();

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<3b196ff5779051fcd1ed9cca6b7be112>>
* @generated SignedSource<<a1d0124ec674f96dc08a172af1d5ed52>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -9,21 +9,21 @@
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
export type PeopleFilter = {
export type ProfileFilter = {
excludeContractEnded?: boolean | null | undefined;
};
export type PeopleGraphQuery$variables = {
filter?: PeopleFilter | null | undefined;
filter?: ProfileFilter | null | undefined;
organizationId: string;
};
export type PeopleGraphQuery$data = {
readonly organization: {
readonly peoples?: {
readonly profiles?: {
readonly edges: ReadonlyArray<{
readonly node: {
readonly emailAddress: string;
readonly fullName: string;
readonly id: string;
readonly primaryEmailAddress: string;
};
}>;
};
@@ -84,15 +84,15 @@ v4 = {
}
}
],
"concreteType": "PeopleConnection",
"concreteType": "ProfileConnection",
"kind": "LinkedField",
"name": "peoples",
"name": "profiles",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "PeopleEdge",
"concreteType": "ProfileEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
@@ -100,7 +100,7 @@ v4 = {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "node",
"plural": false,
@@ -117,7 +117,7 @@ v4 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "primaryEmailAddress",
"name": "emailAddress",
"storageKey": null
}
],
@@ -191,16 +191,16 @@ return {
]
},
"params": {
"cacheID": "3b6dc3ae9df52a04b5d496b68f8c26f4",
"cacheID": "b29f98c795b6aeaa982838ebf8084b88",
"id": null,
"metadata": {},
"name": "PeopleGraphQuery",
"operationKind": "query",
"text": "query PeopleGraphQuery(\n $organizationId: ID!\n $filter: PeopleFilter\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n peoples(first: 1000, orderBy: {direction: ASC, field: FULL_NAME}, filter: $filter) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n }\n }\n }\n }\n id\n }\n}\n"
"text": "query PeopleGraphQuery(\n $organizationId: ID!\n $filter: ProfileFilter\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n profiles(first: 1000, orderBy: {direction: ASC, field: FULL_NAME}, filter: $filter) {\n edges {\n node {\n id\n fullName\n emailAddress\n }\n }\n }\n }\n id\n }\n}\n"
}
};
})();
(node as any).hash = "f1ce35948ab8dcd05c83e13ad83d93cd";
(node as any).hash = "412bb20f434c241e6aa675b6afa409f6";
export default node;

View File

@@ -1,169 +0,0 @@
/**
* @generated SignedSource<<2118560efee5903bb0199e651ac49e2e>>
* @lightSyntaxTransform
* @nogrep
*/
/* tslint:disable */
/* eslint-disable */
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
export type PeopleKind = "CONTRACTOR" | "EMPLOYEE" | "SERVICE_ACCOUNT";
export type UpdatePeopleInput = {
additionalEmailAddresses?: ReadonlyArray<string> | null | undefined;
contractEndDate?: string | null | undefined;
contractStartDate?: string | null | undefined;
fullName?: string | null | undefined;
id: string;
kind?: PeopleKind | null | undefined;
position?: string | null | undefined;
primaryEmailAddress?: string | null | undefined;
};
export type PeopleGraphUpdateMutation$variables = {
input: UpdatePeopleInput;
};
export type PeopleGraphUpdateMutation$data = {
readonly updatePeople: {
readonly people: {
readonly additionalEmailAddresses: ReadonlyArray<string>;
readonly contractEndDate: string | null | undefined;
readonly contractStartDate: string | null | undefined;
readonly fullName: string;
readonly id: string;
readonly kind: PeopleKind;
readonly position: string | null | undefined;
readonly primaryEmailAddress: string;
};
};
};
export type PeopleGraphUpdateMutation = {
response: PeopleGraphUpdateMutation$data;
variables: PeopleGraphUpdateMutation$variables;
};
const node: ConcreteRequest = (function(){
var v0 = [
{
"defaultValue": null,
"kind": "LocalArgument",
"name": "input"
}
],
v1 = [
{
"alias": null,
"args": [
{
"kind": "Variable",
"name": "input",
"variableName": "input"
}
],
"concreteType": "UpdatePeoplePayload",
"kind": "LinkedField",
"name": "updatePeople",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "People",
"kind": "LinkedField",
"name": "people",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "primaryEmailAddress",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "position",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "kind",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "additionalEmailAddresses",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractStartDate",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractEndDate",
"storageKey": null
}
],
"storageKey": null
}
],
"storageKey": null
}
];
return {
"fragment": {
"argumentDefinitions": (v0/*: any*/),
"kind": "Fragment",
"metadata": null,
"name": "PeopleGraphUpdateMutation",
"selections": (v1/*: any*/),
"type": "Mutation",
"abstractKey": null
},
"kind": "Request",
"operation": {
"argumentDefinitions": (v0/*: any*/),
"kind": "Operation",
"name": "PeopleGraphUpdateMutation",
"selections": (v1/*: any*/)
},
"params": {
"cacheID": "23c51259f3ff117441f9c6e11de5ba5a",
"id": null,
"metadata": {},
"name": "PeopleGraphUpdateMutation",
"operationKind": "mutation",
"text": "mutation PeopleGraphUpdateMutation(\n $input: UpdatePeopleInput!\n) {\n updatePeople(input: $input) {\n people {\n id\n fullName\n primaryEmailAddress\n position\n kind\n additionalEmailAddresses\n contractStartDate\n contractEndDate\n }\n }\n}\n"
}
};
})();
(node as any).hash = "fc0946729d6a2729aa1b7c9b2dfbdf7a";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<a784f382bb38ee97a08852676bdf78c5>>
* @generated SignedSource<<dbfa9933e6f239c56df94f5207d47d08>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -11,22 +11,22 @@
import { ConcreteRequest } from 'relay-runtime';
import { FragmentRefs } from "relay-runtime";
export type OrderDirection = "ASC" | "DESC";
export type PeopleOrderField = "CREATED_AT" | "FULL_NAME" | "KIND";
export type PeopleFilter = {
export type ProfileOrderField = "CREATED_AT" | "FULL_NAME" | "KIND";
export type ProfileFilter = {
excludeContractEnded?: boolean | null | undefined;
};
export type PeopleOrder = {
export type ProfileOrder = {
direction: OrderDirection;
field: PeopleOrderField;
field: ProfileOrderField;
};
export type PeopleListQuery$variables = {
after?: string | null | undefined;
before?: string | null | undefined;
filter?: PeopleFilter | null | undefined;
filter?: ProfileFilter | null | undefined;
first?: number | null | undefined;
id: string;
last?: number | null | undefined;
order?: PeopleOrder | null | undefined;
order?: ProfileOrder | null | undefined;
};
export type PeopleListQuery$data = {
readonly node: {
@@ -214,25 +214,25 @@ return {
{
"kind": "Literal",
"name": "action",
"value": "core:people:create"
"value": "iam:membership-profile:create"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:create\")"
"storageKey": "permission(action:\"iam:membership-profile:create\")"
},
{
"alias": null,
"args": (v15/*: any*/),
"concreteType": "PeopleConnection",
"concreteType": "ProfileConnection",
"kind": "LinkedField",
"name": "peoples",
"name": "profiles",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "PeopleEdge",
"concreteType": "ProfileEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
@@ -240,7 +240,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "node",
"plural": false,
@@ -257,7 +257,7 @@ return {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "primaryEmailAddress",
"name": "emailAddress",
"storageKey": null
},
{
@@ -301,12 +301,12 @@ return {
{
"kind": "Literal",
"name": "action",
"value": "core:people:delete"
"value": "iam:membership-profile:delete"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:delete\")"
"storageKey": "permission(action:\"iam:membership-profile:delete\")"
},
{
"alias": "canUpdate",
@@ -314,12 +314,12 @@ return {
{
"kind": "Literal",
"name": "action",
"value": "core:people:update"
"value": "iam:membership-profile:update"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:update\")"
"storageKey": "permission(action:\"iam:membership-profile:update\")"
},
(v13/*: any*/)
],
@@ -397,9 +397,9 @@ return {
"filter"
],
"handle": "connection",
"key": "PeopleGraphPaginatedQuery_peoples",
"key": "PeopleGraphPaginatedQuery_profiles",
"kind": "LinkedHandle",
"name": "peoples"
"name": "profiles"
}
],
"type": "Organization",
@@ -411,16 +411,16 @@ return {
]
},
"params": {
"cacheID": "0ebad3a1b3f8943f1fdc170021089dc8",
"cacheID": "df38c9b5774c0ef76d632a4bc810b676",
"id": null,
"metadata": {},
"name": "PeopleListQuery",
"operationKind": "query",
"text": "query PeopleListQuery(\n $after: CursorKey = null\n $before: CursorKey = null\n $filter: PeopleFilter = null\n $first: Int = 50\n $last: Int = null\n $order: PeopleOrder = {direction: ASC, field: FULL_NAME}\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...PeopleGraphPaginatedFragment_4cFWzS\n id\n }\n}\n\nfragment PeopleGraphPaginatedFragment_4cFWzS on Organization {\n canCreatePeople: permission(action: \"core:people:create\")\n peoples(first: $first, after: $after, last: $last, before: $before, orderBy: $order, filter: $filter) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n kind\n position\n additionalEmailAddresses\n contractStartDate\n contractEndDate\n canDelete: permission(action: \"core:people:delete\")\n canUpdate: permission(action: \"core:people:update\")\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n"
"text": "query PeopleListQuery(\n $after: CursorKey = null\n $before: CursorKey = null\n $filter: ProfileFilter = null\n $first: Int = 50\n $last: Int = null\n $order: ProfileOrder = {direction: ASC, field: FULL_NAME}\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...PeopleGraphPaginatedFragment_4cFWzS\n id\n }\n}\n\nfragment PeopleGraphPaginatedFragment_4cFWzS on Organization {\n canCreatePeople: permission(action: \"iam:membership-profile:create\")\n profiles(first: $first, after: $after, last: $last, before: $before, orderBy: $order, filter: $filter) {\n edges {\n node {\n id\n fullName\n emailAddress\n kind\n position\n additionalEmailAddresses\n contractStartDate\n contractEndDate\n canDelete: permission(action: \"iam:membership-profile:delete\")\n canUpdate: permission(action: \"iam:membership-profile:update\")\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n"
}
};
})();
(node as any).hash = "199e1751362979bcc7e86e1a90a449d4";
(node as any).hash = "00fc3c290ab8526c36804176a79760ca";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<238d486ca746aa2d13f6e87ddab1c8e3>>
* @generated SignedSource<<4cd86d107988eb099fff3b496ceb4b1f>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -262,7 +262,7 @@ v5 = {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "dataProtectionOfficer",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<3c389bd21593ce8129cdfca360d3a89d>>
* @generated SignedSource<<39a1315d42c190fd43eeec5e06747aca>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -254,7 +254,7 @@ v3 = [
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "dataProtectionOfficer",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<96fbfd51b05b496753a0d278d92f2eb4>>
* @generated SignedSource<<d4d20efd4d936984e9a38123528ae7af>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -193,7 +193,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<cac11a0f78a2e3980e953f77d040c52a>>
* @generated SignedSource<<c09daaec8f366774a1696fb36bad7676>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -210,7 +210,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<4a3c1f52f5b371d6cbea3557e609252e>>
* @generated SignedSource<<dc2ade326054c46c6fe36f2da22d8153>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -202,7 +202,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<f0137f6782d41b9fc869e8c1139db167>>
* @generated SignedSource<<8159d097afc6c907c5c2e2f789bbd7e8>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -116,7 +116,7 @@ v7 = {
v8 = {
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,
@@ -845,7 +845,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<545b2d50da8f79510029c5dba61ae821>>
* @generated SignedSource<<54426392a0a6256d11045404a602b5c3>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -176,7 +176,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<173bd86c9660b900d34ccd42228adae5>>
* @generated SignedSource<<abfb45e0b7963a895b6f0d8094d202cb>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -280,7 +280,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<2f9bc9cc4e848c4b8c88326c2279d94f>>
* @generated SignedSource<<eba2fad98effd0d92aa3d1451a71497c>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -150,7 +150,7 @@ v11 = {
v12 = {
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<00cfb3ae1f26e5b5ab343724f00292b0>>
* @generated SignedSource<<4df3ee17d608eabfe5b51673786b5d8d>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -115,7 +115,7 @@ v2 = [
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<ab0bd594132e6b39ac6a258a23c2dc96>>
* @generated SignedSource<<4674036c51beaed9448452b4e5d78667>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -189,7 +189,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "assignedTo",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<2d84132b898531d9d125296a8cbcfb99>>
* @generated SignedSource<<e42d456a9115e64c71c9ee6a89dcf246>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -87,7 +87,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "assignedTo",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<ea383b8b58c0c28b83fb96a2733b4501>>
* @generated SignedSource<<dc9fa774f4bb7a8b1f2c476104e715aa>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -160,7 +160,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "assignedTo",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<49e625198e625fa4936d080e3c122c50>>
* @generated SignedSource<<45b471f2a1fc7d6acb2b3066d0027163>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -115,7 +115,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "assignedTo",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<81d11db9c3fc82ef3f0226332a6fe4f2>>
* @generated SignedSource<<2844fe03a4dfc0248a429000cc7eb484>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -264,7 +264,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "assignedTo",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<f72445ad5e95c960270b2234da2b1a1f>>
* @generated SignedSource<<94e31e9e1e26ee4a548dc90b4f13b9ca>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -537,7 +537,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "businessOwner",
"plural": false,
@@ -547,7 +547,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "securityOwner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<759f9a511cc5c589b3ac366de83adbfe>>
* @generated SignedSource<<8431443063be1d35d034a615cf97bcc4>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -129,7 +129,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "owner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<c17f2f40b3c25f5c333824c70ad168e5>>
* @generated SignedSource<<8edb25e86af506197207e5b3b6da6be5>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -168,7 +168,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "businessOwner",
"plural": false,
@@ -178,7 +178,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "securityOwner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<186b7bb61950ba6e7a05d0e16ce4d2c6>>
* @generated SignedSource<<6965b8a2bb1b8043b31b6eb1f8067784>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -244,7 +244,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "businessOwner",
"plural": false,
@@ -254,7 +254,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "People",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "securityOwner",
"plural": false,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<0f5d74875ad984071d92f1d0e3cfce12>>
* @generated SignedSource<<6a26345e6949e02e37f5ab52c4d6fe05>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -385,19 +385,6 @@ return {
"name": "permission",
"storageKey": "permission(action:\"core:framework:list\")"
},
{
"alias": "canListPeople",
"args": [
{
"kind": "Literal",
"name": "action",
"value": "core:people:list"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"core:people:list\")"
},
{
"alias": "canListVendors",
"args": [
@@ -618,12 +605,12 @@ return {
]
},
"params": {
"cacheID": "f380d0fe83b6d660c61c379af4d2eb7d",
"cacheID": "6f7fa430d00e6734258bfc03bebb1b29",
"id": null,
"metadata": {},
"name": "ViewerMembershipLayoutQuery",
"operationKind": "query",
"text": "query ViewerMembershipLayoutQuery(\n $organizationId: ID!\n $hideSidebar: Boolean!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n ...MembershipsDropdown_organizationFragment\n ...ViewerMembershipDropdownFragment\n ...SidebarFragment @skip(if: $hideSidebar)\n viewerMembership {\n role\n profile {\n fullName\n id\n }\n id\n }\n }\n id\n }\n viewer {\n email\n ...MembershipsDropdown_viewerFragment\n pendingInvitations {\n totalCount\n }\n id\n }\n}\n\nfragment MembershipsDropdown_organizationFragment on Organization {\n name\n}\n\nfragment MembershipsDropdown_viewerFragment on Identity {\n pendingInvitations {\n totalCount\n }\n}\n\nfragment SidebarFragment on Organization {\n canListMeetings: permission(action: \"core:meeting:list\")\n canListTasks: permission(action: \"core:task:list\")\n canListMeasures: permission(action: \"core:measure:list\")\n canListRisks: permission(action: \"core:risk:list\")\n canListFrameworks: permission(action: \"core:framework:list\")\n canListPeople: permission(action: \"core:people:list\")\n canListVendors: permission(action: \"core:vendor:list\")\n canListDocuments: permission(action: \"core:document:list\")\n canListAssets: permission(action: \"core:asset:list\")\n canListData: permission(action: \"core:datum:list\")\n canListAudits: permission(action: \"core:audit:list\")\n canListNonconformities: permission(action: \"core:nonconformity:list\")\n canListObligations: permission(action: \"core:obligation:list\")\n canListContinualImprovements: permission(action: \"core:continual-improvement:list\")\n canListProcessingActivities: permission(action: \"core:processing-activity:list\")\n canListRightsRequests: permission(action: \"core:rights-request:list\")\n canListSnapshots: permission(action: \"core:snapshot:list\")\n canGetTrustCenter: permission(action: \"core:trust-center:get\")\n canUpdateOrganization: permission(action: \"iam:organization:update\")\n canListStatesOfApplicability: permission(action: \"core:state-of-applicability:list\")\n}\n\nfragment ViewerMembershipDropdownFragment on Organization {\n viewerMembership {\n identity {\n email\n canListAPIKeys: permission(action: \"iam:personal-api-key:list\")\n id\n }\n profile {\n fullName\n id\n }\n id\n }\n}\n"
"text": "query ViewerMembershipLayoutQuery(\n $organizationId: ID!\n $hideSidebar: Boolean!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n ...MembershipsDropdown_organizationFragment\n ...ViewerMembershipDropdownFragment\n ...SidebarFragment @skip(if: $hideSidebar)\n viewerMembership {\n role\n profile {\n fullName\n id\n }\n id\n }\n }\n id\n }\n viewer {\n email\n ...MembershipsDropdown_viewerFragment\n pendingInvitations {\n totalCount\n }\n id\n }\n}\n\nfragment MembershipsDropdown_organizationFragment on Organization {\n name\n}\n\nfragment MembershipsDropdown_viewerFragment on Identity {\n pendingInvitations {\n totalCount\n }\n}\n\nfragment SidebarFragment on Organization {\n canListMeetings: permission(action: \"core:meeting:list\")\n canListTasks: permission(action: \"core:task:list\")\n canListMeasures: permission(action: \"core:measure:list\")\n canListRisks: permission(action: \"core:risk:list\")\n canListFrameworks: permission(action: \"core:framework:list\")\n canListVendors: permission(action: \"core:vendor:list\")\n canListDocuments: permission(action: \"core:document:list\")\n canListAssets: permission(action: \"core:asset:list\")\n canListData: permission(action: \"core:datum:list\")\n canListAudits: permission(action: \"core:audit:list\")\n canListNonconformities: permission(action: \"core:nonconformity:list\")\n canListObligations: permission(action: \"core:obligation:list\")\n canListContinualImprovements: permission(action: \"core:continual-improvement:list\")\n canListProcessingActivities: permission(action: \"core:processing-activity:list\")\n canListRightsRequests: permission(action: \"core:rights-request:list\")\n canListSnapshots: permission(action: \"core:snapshot:list\")\n canGetTrustCenter: permission(action: \"core:trust-center:get\")\n canUpdateOrganization: permission(action: \"iam:organization:update\")\n canListStatesOfApplicability: permission(action: \"core:state-of-applicability:list\")\n}\n\nfragment ViewerMembershipDropdownFragment on Organization {\n viewerMembership {\n identity {\n email\n canListAPIKeys: permission(action: \"iam:personal-api-key:list\")\n id\n }\n profile {\n fullName\n id\n }\n id\n }\n}\n"
}
};
})();

View File

@@ -8,7 +8,7 @@ import { usePeople } from "#/hooks/graph/PeopleGraph";
type Person = {
id: string;
fullName: string;
primaryEmailAddress?: string | null;
emailAddress?: string | null;
};
type Props<T extends FieldValues = FieldValues> = {
@@ -57,7 +57,7 @@ function PeopleMultiSelectWithQuery<T extends FieldValues = FieldValues>(
allPeople.push({
id: selectedPerson.id,
fullName: selectedPerson.fullName,
primaryEmailAddress: selectedPerson.primaryEmailAddress ?? "",
emailAddress: selectedPerson.emailAddress ?? "",
});
}
});
@@ -107,9 +107,9 @@ function PeopleMultiSelectWithQuery<T extends FieldValues = FieldValues>(
/>
<div className="flex flex-col">
<span>{person.fullName}</span>
{person.primaryEmailAddress && (
{person.emailAddress && (
<span className="text-xs text-txt-secondary">
{person.primaryEmailAddress}
{person.emailAddress}
</span>
)}
</div>

View File

@@ -20,7 +20,7 @@ export function PeopleCell(props: Props) {
filter: { excludeContractEnded: true },
}}
items={data =>
data.organization?.peoples?.edges.map(edge => edge.node) ?? []}
data.organization?.profiles?.edges.map(edge => edge.node) ?? []}
itemRenderer={({ item }) => (
<div className="flex gap-2 whitespace-nowrap items-center text-xs">
<Avatar name={item.fullName} />

View File

@@ -1,31 +1,16 @@
import {
formatError,
type GraphQLError,
promisifyMutation,
sprintf,
} from "@probo/helpers";
import { useTranslate } from "@probo/i18n";
import { useConfirm, useToast } from "@probo/ui";
import { useMemo } from "react";
import {
type PreloadedQuery,
useLazyLoadQuery,
useMutation,
usePaginationFragment,
usePreloadedQuery,
} from "react-relay";
import { graphql } from "relay-runtime";
import type { PeopleGraphDeleteMutation } from "#/__generated__/core/PeopleGraphDeleteMutation.graphql";
import type { PeopleGraphPaginatedFragment$key } from "#/__generated__/core/PeopleGraphPaginatedFragment.graphql";
import type { PeopleGraphPaginatedQuery } from "#/__generated__/core/PeopleGraphPaginatedQuery.graphql";
import type { PeopleGraphQuery } from "#/__generated__/core/PeopleGraphQuery.graphql";
export const peopleQuery = graphql`
query PeopleGraphQuery($organizationId: ID!, $filter: PeopleFilter) {
query PeopleGraphQuery($organizationId: ID!, $filter: ProfileFilter) {
organization: node(id: $organizationId) {
... on Organization {
peoples(
profiles(
first: 1000
orderBy: { direction: ASC, field: FULL_NAME }
filter: $filter
@@ -34,7 +19,7 @@ export const peopleQuery = graphql`
node {
id
fullName
primaryEmailAddress
emailAddress
}
}
}
@@ -59,7 +44,7 @@ export function usePeople(
{ fetchPolicy: "network-only" },
);
return useMemo(() => {
return data.organization?.peoples?.edges.map(edge => edge.node) ?? [];
return data.organization?.profiles?.edges.map(edge => edge.node) ?? [];
}, [data]);
}
@@ -80,147 +65,38 @@ export const paginatedPeopleFragment = graphql`
@argumentDefinitions(
first: { type: "Int", defaultValue: 50 }
order: {
type: "PeopleOrder"
type: "ProfileOrder"
defaultValue: { direction: ASC, field: FULL_NAME }
}
filter: { type: "PeopleFilter", defaultValue: null }
filter: { type: "ProfileFilter", defaultValue: null }
after: { type: "CursorKey", defaultValue: null }
before: { type: "CursorKey", defaultValue: null }
last: { type: "Int", defaultValue: null }
) {
canCreatePeople: permission(action: "core:people:create")
peoples(
canCreatePeople: permission(action: "iam:membership-profile:create")
profiles(
first: $first
after: $after
last: $last
before: $before
orderBy: $order
filter: $filter
) @connection(key: "PeopleGraphPaginatedQuery_peoples") {
) @connection(key: "PeopleGraphPaginatedQuery_profiles") {
__id
edges {
node {
id
fullName
primaryEmailAddress
emailAddress
kind
position
additionalEmailAddresses
contractStartDate
contractEndDate
canDelete: permission(action: "core:people:delete")
canUpdate: permission(action: "core:people:update")
canDelete: permission(action: "iam:membership-profile:delete")
canUpdate: permission(action: "iam:membership-profile:update")
}
}
}
}
`;
export function usePeopleQuery(
queryRef: PreloadedQuery<PeopleGraphPaginatedQuery>,
) {
const data = usePreloadedQuery(paginatedPeopleQuery, queryRef);
const pagination = usePaginationFragment(
paginatedPeopleFragment,
data.organization as PeopleGraphPaginatedFragment$key,
);
const people = pagination.data.peoples?.edges.map(edge => edge.node);
return {
...pagination,
people,
connectionId: pagination.data.peoples.__id,
};
}
export const deletePeopleMutation = graphql`
mutation PeopleGraphDeleteMutation(
$input: DeletePeopleInput!
$connections: [ID!]!
) {
deletePeople(input: $input) {
deletedPeopleId @deleteEdge(connections: $connections)
}
}
`;
export const PeopleConnectionKey = "PeopleGraphPaginatedQuery_peoples";
export const useDeletePeople = (
people: { id?: string; fullName?: string },
connectionId: string,
) => {
const [mutate] = useMutation<PeopleGraphDeleteMutation>(deletePeopleMutation);
const confirm = useConfirm();
const { toast } = useToast();
const { __ } = useTranslate();
return () => {
if (!people.id || !people.fullName) {
return alert(__("Failed to delete people: missing id or fullName"));
}
confirm(
() =>
promisifyMutation(mutate)({
variables: {
input: {
peopleId: people.id!,
},
connections: [connectionId],
},
}).catch((error) => {
toast({
title: __("Error"),
description: formatError(
__("Failed to delete people"),
error as GraphQLError,
),
variant: "error",
});
}),
{
message: sprintf(
__(
"This will permanently delete \"%s\". This action cannot be undone.",
),
people.fullName,
),
},
);
};
};
export const peopleNodeQuery = graphql`
query PeopleGraphNodeQuery($peopleId: ID!) {
node(id: $peopleId) {
... on People {
id
fullName
primaryEmailAddress
position
kind
additionalEmailAddresses
contractStartDate
contractEndDate
canUpdate: permission(action: "core:people:update")
canDelete: permission(action: "core:people:delete")
}
}
}
`;
export const updatePeopleMutation = graphql`
mutation PeopleGraphUpdateMutation($input: UpdatePeopleInput!) {
updatePeople(input: $input) {
people {
id
fullName
primaryEmailAddress
position
kind
additionalEmailAddresses
contractStartDate
contractEndDate
}
}
}
`;

View File

@@ -8,7 +8,6 @@ import {
IconClock,
IconCrossLargeX,
IconFire3,
IconGroup1,
IconInboxEmpty,
IconListStack,
IconLock,
@@ -35,7 +34,6 @@ const fragment = graphql`
canListMeasures: permission(action: "core:measure:list")
canListRisks: permission(action: "core:risk:list")
canListFrameworks: permission(action: "core:framework:list")
canListPeople: permission(action: "core:people:list")
canListVendors: permission(action: "core:vendor:list")
canListDocuments: permission(action: "core:document:list")
canListAssets: permission(action: "core:asset:list")
@@ -106,13 +104,6 @@ export function Sidebar(props: { fKey: SidebarFragment$key }) {
to={`${prefix}/frameworks`}
/>
)}
{organization.canListPeople && (
<SidebarItem
label={__("People")}
icon={IconGroup1}
to={`${prefix}/people`}
/>
)}
{organization.canListVendors && (
<SidebarItem
label={__("Vendors")}

View File

@@ -148,12 +148,12 @@ function PeopleList({
paginatedPeopleFragment,
data.organization as PeopleGraphPaginatedFragment$key,
);
const people = page.peoples.edges.map(edge => edge.node);
const profiles = page.profiles.edges.map(edge => edge.node);
return (
<>
<Table className="border-none rounded-none">
<Tbody>
{people.map(person => (
{profiles.map(person => (
<Tr key={person.id}>
<Td width={75}>
<Checkbox
@@ -167,7 +167,7 @@ function PeopleList({
<div>
<div className="text-sm">{person.fullName}</div>
<div className="text-xs text-txt-tertiary">
{person.primaryEmailAddress}
{person.emailAddress}
</div>
</div>
</div>
@@ -185,7 +185,7 @@ function PeopleList({
icon={IconChevronDown}
type="button"
>
{sprintf(__("Show %s more"), people.length)}
{sprintf(__("Show %s more"), profiles.length)}
</Button>
)}
</>

View File

@@ -39,10 +39,10 @@ const versionFragment = graphql`
const peopleFragment = graphql`
fragment DocumentSignatureList_peopleFragment on Organization @argumentDefinitions(
filter: { type: "PeopleFilter" }
filter: { type: "ProfileFilter" }
) {
...DocumentSignaturePlaceholder_organizationFragment
people: peoples(
profiles(
first: 1000
orderBy: { direction: ASC, field: FULL_NAME }
filter: $filter
@@ -66,7 +66,7 @@ export function DocumentSignatureList(props: {
}) {
const { peopleFragmentRef, selectedStates, versionFragmentRef } = props;
const { people, ...organization } = useFragment<DocumentSignatureList_peopleFragment$key>(
const { profiles, ...organization } = useFragment<DocumentSignatureList_peopleFragment$key>(
peopleFragment,
peopleFragmentRef,
);
@@ -96,8 +96,8 @@ export function DocumentSignatureList(props: {
const filteredPeople
= selectedStates.length > 0
? people.edges.filter(({ node }) => signatureMap.has(node.id))
: people.edges;
? profiles.edges.filter(({ node }) => signatureMap.has(node.id))
: profiles.edges;
return (
<div className="space-y-2 divide-y divide-border-solid">

View File

@@ -17,10 +17,10 @@ const organizationFragment = graphql`
`;
const personFragment = graphql`
fragment DocumentSignaturePlaceholder_personFragment on People {
fragment DocumentSignaturePlaceholder_personFragment on Profile {
id
fullName
primaryEmailAddress
emailAddress
}
`;
@@ -83,7 +83,7 @@ export function DocumentSignaturePlaceholder(props: {
{person.fullName}
</div>
<div className="text-xs text-txt-secondary">
{person.primaryEmailAddress}
{person.emailAddress}
</div>
</div>
{version.status === "PUBLISHED" && canRequestSignature && (

View File

@@ -1,92 +0,0 @@
import { useTranslate } from "@probo/i18n";
import {
ActionDropdown,
Avatar,
Breadcrumb,
DropdownItem,
IconTrashCan,
TabLink,
Tabs,
} from "@probo/ui";
import {
ConnectionHandler,
type PreloadedQuery,
usePreloadedQuery,
} from "react-relay";
import { Outlet } from "react-router";
import type { PeopleGraphNodeQuery } from "#/__generated__/core/PeopleGraphNodeQuery.graphql";
import {
PeopleConnectionKey,
peopleNodeQuery,
useDeletePeople,
} from "#/hooks/graph/PeopleGraph";
import { useOrganizationId } from "#/hooks/useOrganizationId";
type Props = {
queryRef: PreloadedQuery<PeopleGraphNodeQuery>;
};
export default function PeopleDetailPage(props: Props) {
const data = usePreloadedQuery(peopleNodeQuery, props.queryRef);
const people = data.node;
const { __ } = useTranslate();
const organizationId = useOrganizationId();
const deletePeople = useDeletePeople(
people,
ConnectionHandler.getConnectionID(organizationId, PeopleConnectionKey),
);
return (
<div className="space-y-6">
<Breadcrumb
items={[
{
label: __("People"),
to: `/organizations/${organizationId}/people`,
},
{
label: data.node.fullName ?? "",
},
]}
/>
<div className="flex justify-between">
<div className="space-y-4">
<Avatar name={people.fullName ?? ""} size="xl" />
<div className="text-2xl">{people.fullName}</div>
</div>
{data.node.canDelete && (
<ActionDropdown variant="secondary">
<DropdownItem
variant="danger"
icon={IconTrashCan}
onClick={deletePeople}
>
{__("Delete")}
</DropdownItem>
</ActionDropdown>
)}
</div>
<Tabs>
<TabLink
to={`/organizations/${organizationId}/people/${people.id}/tasks`}
>
{__("Tasks")}
</TabLink>
<TabLink
to={`/organizations/${organizationId}/people/${people.id}/role`}
>
{__("Role & access")}
</TabLink>
<TabLink
to={`/organizations/${organizationId}/people/${people.id}/profile`}
>
{__("General information")}
</TabLink>
</Tabs>
<Outlet context={{ people }} />
</div>
);
}

View File

@@ -1,175 +0,0 @@
import { getRole } from "@probo/helpers";
import { usePageTitle } from "@probo/hooks";
import { useTranslate } from "@probo/i18n";
import {
ActionDropdown,
Avatar,
Button,
DropdownItem,
IconCalendar2,
IconPlusLarge,
IconTrashCan,
PageHeader,
Tbody,
Td,
Th,
Thead,
Tr,
} from "@probo/ui";
import { useRef } from "react";
import { type PreloadedQuery } from "react-relay";
import type { PeopleGraphPaginatedFragment$data } from "#/__generated__/core/PeopleGraphPaginatedFragment.graphql";
import type { PeopleGraphPaginatedQuery } from "#/__generated__/core/PeopleGraphPaginatedQuery.graphql";
import { SortableTable, SortableTh } from "#/components/SortableTable";
import { useDeletePeople, usePeopleQuery } from "#/hooks/graph/PeopleGraph";
import { useOrganizationId } from "#/hooks/useOrganizationId";
import type { NodeOf } from "#/types";
import { CreatePeopleDialog } from "./dialogs/CreatePeopleDialog";
import {
SetEndOfContractDialog,
type SetEndOfContractDialogRef,
} from "./dialogs/SetEndOfContractDialog";
type People = NodeOf<PeopleGraphPaginatedFragment$data["peoples"]>;
const isContractEnded = (person: People): boolean => {
if (!person.contractEndDate) return false;
const endDate = new Date(person.contractEndDate);
const today = new Date();
today.setHours(0, 0, 0, 0);
return endDate < today;
};
export default function PeopleListPage({
queryRef,
}: {
queryRef: PreloadedQuery<PeopleGraphPaginatedQuery>;
}) {
const { __ } = useTranslate();
const {
data,
people,
refetch,
connectionId,
hasNext,
loadNext,
isLoadingNext,
} = usePeopleQuery(queryRef);
usePageTitle(__("Members"));
const hasAnyAction = people.some(
({ canDelete, canUpdate }) => canDelete || canUpdate,
);
return (
<div className="space-y-6">
<PageHeader
title={__("Members")}
description={__(
"Keep track of your company's workforce and their progress towards completing tasks assigned to them.",
)}
>
{data.canCreatePeople && (
<CreatePeopleDialog connectionId={connectionId}>
<Button icon={IconPlusLarge}>{__("Add member")}</Button>
</CreatePeopleDialog>
)}
</PageHeader>
<SortableTable
refetch={refetch}
hasNext={hasNext}
loadNext={loadNext}
isLoadingNext={isLoadingNext}
>
<Thead>
<Tr>
<SortableTh field="FULL_NAME">{__("Name")}</SortableTh>
<SortableTh field="KIND">{__("Role")}</SortableTh>
<Th>{__("Position")}</Th>
{hasAnyAction && <Th>{__("Actions")}</Th>}
</Tr>
</Thead>
<Tbody>
{people.map(person => (
<PeopleRow
key={person.id}
people={person}
connectionId={connectionId}
hasAnyAction={hasAnyAction}
/>
))}
</Tbody>
</SortableTable>
</div>
);
}
function PeopleRow({
people,
connectionId,
hasAnyAction,
}: {
people: People;
connectionId: string;
hasAnyAction: boolean;
}) {
const organizationId = useOrganizationId();
const { __ } = useTranslate();
const deletePeople = useDeletePeople(people, connectionId);
const contractEnded = isContractEnded(people);
const dialogRef = useRef<SetEndOfContractDialogRef>(null);
return (
<>
<SetEndOfContractDialog
peopleId={people.id}
currentContractEndDate={people.contractEndDate}
ref={dialogRef}
/>
<Tr
to={`/organizations/${organizationId}/people/${people.id}/profile`}
className={contractEnded ? "opacity-50" : ""}
>
<Td>
<div className="flex gap-3 items-center">
<Avatar name={people.fullName} />
<div>
<div className="text-sm">{people.fullName}</div>
<div className="text-xs text-txt-tertiary">
{people.primaryEmailAddress}
</div>
</div>
</div>
</Td>
<Td className="text-sm">{getRole(__, people.kind)}</Td>
<Td className="text-sm">{people.position}</Td>
{hasAnyAction && (
<Td noLink width={50} className="text-end">
<ActionDropdown>
{people.canUpdate && (
<DropdownItem
icon={IconCalendar2}
onClick={() => dialogRef.current?.open()}
>
{__("Set end of contract")}
</DropdownItem>
)}
{people.canDelete && (
<DropdownItem
icon={IconTrashCan}
variant="danger"
onClick={deletePeople}
>
{__("Delete")}
</DropdownItem>
)}
</ActionDropdown>
</Td>
)}
</Tr>
</>
);
}

View File

@@ -1,140 +0,0 @@
import { getRoles, peopleRoles } from "@probo/helpers";
import { useTranslate } from "@probo/i18n";
import {
Breadcrumb,
Button,
Dialog,
DialogContent,
DialogFooter,
Field,
Option,
useDialogRef,
} from "@probo/ui";
import type { ReactNode } from "react";
import { graphql } from "relay-runtime";
import { z } from "zod";
import { ControlledField } from "#/components/form/ControlledField";
import { EmailsField } from "#/components/form/EmailsField";
import { useFormWithSchema } from "#/hooks/useFormWithSchema";
import { useMutationWithToasts } from "#/hooks/useMutationWithToasts";
import { useOrganizationId } from "#/hooks/useOrganizationId";
type Props = {
children: ReactNode;
connectionId: string;
};
const schema = z.object({
fullName: z.string().min(1),
position: z.string().min(1),
primaryEmailAddress: z.string().email(),
additionalEmailAddresses: z.preprocess(
// Empty additional emails are skipped
v => (v as string[]).filter(v => !!v),
z.array(z.string().email()),
),
kind: z.enum(peopleRoles),
});
export const createPeopleMutation = graphql`
mutation CreatePeopleDialogMutation(
$input: CreatePeopleInput!
$connections: [ID!]!
) {
createPeople(input: $input) {
peopleEdge @prependEdge(connections: $connections) {
node {
id
fullName
primaryEmailAddress
position
kind
additionalEmailAddresses
canDelete: permission(action: "core:people:delete")
canUpdate: permission(action: "core:people:update")
}
}
}
}
`;
export function CreatePeopleDialog({ children, connectionId }: Props) {
const { __ } = useTranslate();
const organizationId = useOrganizationId();
const { control, handleSubmit, register, reset } = useFormWithSchema(schema, {
defaultValues: {
additionalEmailAddresses: [],
},
});
const ref = useDialogRef();
const [mutate, isMutating] = useMutationWithToasts(createPeopleMutation, {
successMessage: __("Person created successfully."),
errorMessage: __("Failed to create person"),
});
const onSubmit = async (data: z.infer<typeof schema>) => {
await mutate({
variables: {
input: {
...data,
organizationId,
additionalEmailAddresses: data.additionalEmailAddresses ?? [],
},
connections: [connectionId],
},
onSuccess: () => {
reset();
ref.current?.close();
},
});
};
return (
<Dialog
ref={ref}
trigger={children}
title={<Breadcrumb items={[__("People"), __("New Person")]} />}
>
<form onSubmit={e => void handleSubmit(onSubmit)(e)}>
<DialogContent padded className="space-y-4">
<Field
label={__("Full name")}
{...register("fullName")}
type="text"
/>
<Field
label={__("Primary email")}
{...register("primaryEmailAddress")}
type="email"
/>
<Field
label={__("Position")}
{...register("position")}
type="text"
placeholder={__("e.g. CEO, CFO, etc.")}
/>
<ControlledField
control={control}
name="kind"
type="select"
label={__("Role")}
>
{getRoles(__).map(role => (
<Option key={role.value} value={role.value}>
{role.label}
</Option>
))}
</ControlledField>
<EmailsField control={control} register={register} />
</DialogContent>
<DialogFooter>
<Button disabled={isMutating} type="submit">
{__("Create")}
</Button>
</DialogFooter>
</form>
</Dialog>
);
}

View File

@@ -1,108 +0,0 @@
import { formatDatetime, toDateInput } from "@probo/helpers";
import { useTranslate } from "@probo/i18n";
import {
Button,
Dialog,
DialogContent,
DialogFooter,
Field,
Input,
Spinner,
useDialogRef,
} from "@probo/ui";
import { forwardRef, useImperativeHandle } from "react";
import { z } from "zod";
import { updatePeopleMutation } from "#/hooks/graph/PeopleGraph";
import { useFormWithSchema } from "#/hooks/useFormWithSchema";
import { useMutationWithToasts } from "#/hooks/useMutationWithToasts";
const schema = z.object({
contractEndDate: z.string().optional(),
});
export type SetEndOfContractDialogRef = {
open: () => void;
close: () => void;
};
type Props = {
peopleId: string;
currentContractEndDate?: string | null;
};
export const SetEndOfContractDialog = forwardRef<SetEndOfContractDialogRef, Props>(function SetEndOfContractDialog(
{
peopleId,
currentContractEndDate,
},
ref,
) {
const { __ } = useTranslate();
const dialogRef = useDialogRef();
useImperativeHandle(ref, () => ({
open: () => dialogRef.current?.open(),
close: () => dialogRef.current?.close(),
}));
const {
register,
handleSubmit,
formState: { isSubmitting },
reset,
} = useFormWithSchema(schema, {
defaultValues: {
contractEndDate: toDateInput(currentContractEndDate),
},
});
const [mutate] = useMutationWithToasts(updatePeopleMutation, {
successMessage: __("End of contract updated successfully"),
errorMessage: __("Failed to update end of contract"),
});
const onSubmit = async (data: z.infer<typeof schema>) => {
await mutate({
variables: {
input: {
id: peopleId,
contractEndDate: formatDatetime(data.contractEndDate),
},
},
});
dialogRef.current?.close();
};
const handleClose = () => {
reset();
};
return (
<Dialog
title={__("Set End of Contract")}
ref={dialogRef}
className="max-w-lg"
onClose={handleClose}
>
<form onSubmit={e => void handleSubmit(onSubmit)(e)}>
<DialogContent padded className="space-y-4">
<Field label={__("End of contract")}>
<Input {...register("contractEndDate")} type="date" />
</Field>
</DialogContent>
<DialogFooter>
<Button
type="submit"
disabled={isSubmitting}
icon={isSubmitting ? Spinner : undefined}
>
{__("Update")}
</Button>
</DialogFooter>
</form>
</Dialog>
);
});

View File

@@ -1,114 +0,0 @@
import { formatDatetime, peopleRoles } from "@probo/helpers";
import { useTranslate } from "@probo/i18n";
import { Button, Card, Field, Input } from "@probo/ui";
import { useOutletContext } from "react-router";
import { z } from "zod";
import type { PeopleGraphNodeQuery$data } from "#/__generated__/core/PeopleGraphNodeQuery.graphql";
import type { PeopleGraphUpdateMutation } from "#/__generated__/core/PeopleGraphUpdateMutation.graphql";
import { EmailsField } from "#/components/form/EmailsField";
import { updatePeopleMutation } from "#/hooks/graph/PeopleGraph";
import { useFormWithSchema } from "#/hooks/useFormWithSchema";
import { useMutationWithToasts } from "#/hooks/useMutationWithToasts";
const schema = z.object({
fullName: z.string().min(1),
primaryEmailAddress: z.string().email(),
position: z.string().min(1).nullable(),
additionalEmailAddresses: z.preprocess(
// Empty additional emails are skipped
v => (v as string[]).filter(v => !!v),
z.array(z.string().email()),
),
kind: z.enum(peopleRoles),
contractStartDate: z.string().optional().nullable(),
contractEndDate: z.string().optional().nullable(),
});
export default function PeopleProfileTab() {
const { people } = useOutletContext<{
people: PeopleGraphNodeQuery$data["node"];
}>();
const { __ } = useTranslate();
const { control, formState, handleSubmit, register, reset }
= useFormWithSchema(schema, {
defaultValues: {
kind: people.kind,
fullName: people.fullName,
primaryEmailAddress: people.primaryEmailAddress,
position: people.position,
additionalEmailAddresses: [...(people.additionalEmailAddresses ?? [])],
contractStartDate: people.contractStartDate?.split("T")[0] || "",
contractEndDate: people.contractEndDate?.split("T")[0] || "",
},
});
const [mutate, isMutating] = useMutationWithToasts<PeopleGraphUpdateMutation>(
updatePeopleMutation,
{
successMessage: __("Member updated successfully."),
errorMessage: __("Failed to update member"),
},
);
const onSubmit = handleSubmit(async (data: z.infer<typeof schema>) => {
const input = {
id: people.id!,
fullName: data.fullName,
primaryEmailAddress: data.primaryEmailAddress,
position: data.position,
additionalEmailAddresses: data.additionalEmailAddresses,
kind: people.kind,
contractStartDate: formatDatetime(data.contractStartDate) ?? null,
contractEndDate: formatDatetime(data.contractEndDate) ?? null,
};
await mutate({
variables: { input },
onCompleted: () => {
reset(data);
},
});
});
return (
<form onSubmit={e => void onSubmit(e)} className="space-y-4">
<Card padded className="space-y-4">
<Field label={__("Full name")} {...register("fullName")} type="text" />
<Field
label={__("Position")}
{...register("position")}
type="text"
placeholder={__("e.g. CEO, CFO, etc.")}
disabled={!people.canUpdate}
/>
<Field
label={__("Primary email")}
{...register("primaryEmailAddress")}
type="email"
disabled={!people.canUpdate}
/>
<EmailsField control={control} register={register} />
<Field label={__("Contract start date")}>
<Input
{...register("contractStartDate")}
type="date"
disabled={!people.canUpdate}
/>
</Field>
<Field label={__("Contract end date")}>
<Input
{...register("contractEndDate")}
type="date"
disabled={!people.canUpdate}
/>
</Field>
</Card>
<div className="flex justify-end">
{formState.isDirty && people.canUpdate && (
<Button type="submit" disabled={isMutating}>
{__("Update")}
</Button>
)}
</div>
</form>
);
}

View File

@@ -1,117 +0,0 @@
import { getRoles, peopleRoles } from "@probo/helpers";
import { useTranslate } from "@probo/i18n";
import { Button, Card, IconCheckmark1, Option } from "@probo/ui";
import { type PropsWithChildren } from "react";
import { useOutletContext } from "react-router";
import { z } from "zod";
import type { PeopleGraphNodeQuery$data } from "#/__generated__/core/PeopleGraphNodeQuery.graphql";
import type { PeopleGraphUpdateMutation } from "#/__generated__/core/PeopleGraphUpdateMutation.graphql";
import { ControlledField } from "#/components/form/ControlledField";
import { updatePeopleMutation } from "#/hooks/graph/PeopleGraph";
import { useFormWithSchema } from "#/hooks/useFormWithSchema";
import { useMutationWithToasts } from "#/hooks/useMutationWithToasts";
const schema = z.object({
kind: z.enum(peopleRoles),
});
export default function PeopleRoleTab() {
const { people } = useOutletContext<{
people: PeopleGraphNodeQuery$data["node"];
}>();
const { __ } = useTranslate();
const { control, formState, handleSubmit, reset } = useFormWithSchema(
schema,
{
defaultValues: {
kind: people.kind,
},
},
);
const [mutate, isMutating] = useMutationWithToasts<PeopleGraphUpdateMutation>(
updatePeopleMutation,
{
successMessage: __("Member updated successfully."),
errorMessage: __("Failed to update member"),
},
);
const onSubmit = handleSubmit(async (data) => {
await mutate({
variables: {
input: {
id: people.id!,
kind: data.kind,
// TODO : make these field optional in the query (server side)
fullName: people.fullName!,
primaryEmailAddress: people.primaryEmailAddress!,
additionalEmailAddresses: people.additionalEmailAddresses ?? [],
contractStartDate: people.contractStartDate,
contractEndDate: people.contractEndDate,
},
},
onCompleted: () => {
reset(data);
},
});
});
return (
<form onSubmit={e => void onSubmit(e)} className="space-y-4">
<Card padded className="space-y-4">
<ControlledField
control={control}
name="kind"
type="select"
label={__("Role")}
disabled={!people.canUpdate}
>
{getRoles(__).map(role => (
<Option key={role.value} value={role.value}>
{role.label}
</Option>
))}
</ControlledField>
<div className="space-y-2 ">
<div className="text-sm font-medium">{__("Permissions")}</div>
<ul className="text-sm text-txt-tertiary space-y-2">
<AccessItem>
{__("Access dashboard & reports relevant to their team")}
</AccessItem>
<AccessItem>
{__("Create and manage own tasks, tickets, or projects")}
</AccessItem>
<AccessItem>
{__("Comment on shared documents or projects")}
</AccessItem>
<AccessItem>
{__("Receive notifications and system alerts")}
</AccessItem>
<AccessItem>
{__("Join and participate in team chats or threads")}
</AccessItem>
</ul>
</div>
</Card>
{people.canUpdate && (
<div className="flex justify-end">
{formState.isDirty && (
<Button type="submit" disabled={isMutating}>
{__("Update")}
</Button>
)}
</div>
)}
</form>
);
}
function AccessItem({ children }: PropsWithChildren) {
return (
<li className="flex gap-2 items-center">
<IconCheckmark1 size={16} />
{children}
</li>
);
}

View File

@@ -1,7 +0,0 @@
export default function PeopleTasksTab() {
return (
<div className="text-sm text-txt-tertiary text-center">
Not available yet
</div>
);
}

View File

@@ -26,7 +26,6 @@ import { measureRoutes } from "./routes/measureRoutes";
import { meetingsRoutes } from "./routes/meetingsRoutes";
import { nonconformityRoutes } from "./routes/nonconformityRoutes";
import { obligationRoutes } from "./routes/obligationRoutes";
import { peopleRoutes } from "./routes/peopleRoutes";
import { processingActivityRoutes } from "./routes/processingActivityRoutes";
import { rightsRequestRoutes } from "./routes/rightsRequestRoutes";
import { riskRoutes } from "./routes/riskRoutes";
@@ -217,7 +216,6 @@ const routes = [
...riskRoutes,
...measureRoutes,
...documentsRoutes,
...peopleRoutes,
...vendorRoutes,
...frameworkRoutes,
...taskRoutes,

View File

@@ -1,69 +0,0 @@
import { lazy } from "@probo/react-lazy";
import {
type AppRoute,
loaderFromQueryLoader,
withQueryRef,
} from "@probo/routes";
import { loadQuery } from "react-relay";
import type { PeopleGraphNodeQuery } from "#/__generated__/core/PeopleGraphNodeQuery.graphql";
import type { PeopleGraphPaginatedQuery } from "#/__generated__/core/PeopleGraphPaginatedQuery.graphql";
import { LinkCardSkeleton } from "#/components/skeletons/LinkCardSkeleton";
import { PageSkeleton } from "#/components/skeletons/PageSkeleton";
import { coreEnvironment } from "#/environments";
import {
paginatedPeopleQuery,
peopleNodeQuery,
} from "#/hooks/graph/PeopleGraph";
export const peopleRoutes = [
{
path: "people",
Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<PeopleGraphPaginatedQuery>(
coreEnvironment,
paginatedPeopleQuery,
{ organizationId: organizationId },
),
),
Component: withQueryRef(
lazy(() => import("#/pages/organizations/people/PeopleListPage")),
),
},
{
path: "people/:peopleId",
Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ peopleId }) =>
loadQuery<PeopleGraphNodeQuery>(coreEnvironment, peopleNodeQuery, {
peopleId: peopleId,
}),
),
Component: withQueryRef(
lazy(() => import("#/pages/organizations/people/PeopleDetailPage")),
),
children: [
{
path: "tasks",
Fallback: LinkCardSkeleton,
Component: lazy(
() => import("#/pages/organizations/people/tabs/PeopleTasksTab"),
),
},
{
path: "role",
Fallback: LinkCardSkeleton,
Component: lazy(
() => import("#/pages/organizations/people/tabs/PeopleRoleTab"),
),
},
{
path: "profile",
Fallback: LinkCardSkeleton,
Component: lazy(
() => import("#/pages/organizations/people/tabs/PeopleProfileTab"),
),
},
],
},
] satisfies AppRoute[];

View File

@@ -1528,7 +1528,7 @@ input RiskFilter {
snapshotId: ID
}
input PeopleFilter {
input ProfileFilter {
excludeContractEnded: Boolean
}
@@ -1615,6 +1615,15 @@ type Organization implements Node {
headquarterAddress: String
context: OrganizationContext @goField(forceResolver: true)
profiles(
first: Int
after: CursorKey
last: Int
before: CursorKey
orderBy: ProfileOrder
filter: ProfileFilter
): ProfileConnection! @goField(forceResolver: true)
slackConnections(
first: Int
after: CursorKey

View File

@@ -1154,6 +1154,7 @@ type ComplexityRoot struct {
Obligations func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ObligationOrderBy, filter *types.ObligationFilter) int
Permission func(childComplexity int, action string) int
ProcessingActivities func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ProcessingActivityOrderBy, filter *types.ProcessingActivityFilter) int
Profiles func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ProfileOrderBy, filter *types.ProfileFilter) int
RightsRequests func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.RightsRequestOrderBy) int
Risks func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.RiskOrderBy, filter *types.RiskFilter) int
SlackConnections func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey) int
@@ -2240,6 +2241,7 @@ type OrganizationResolver interface {
HorizontalLogoURL(ctx context.Context, obj *types.Organization) (*string, error)
Context(ctx context.Context, obj *types.Organization) (*types.OrganizationContext, error)
Profiles(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ProfileOrderBy, filter *types.ProfileFilter) (*types.ProfileConnection, error)
SlackConnections(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey) (*types.SlackConnectionConnection, error)
Frameworks(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.FrameworkOrderBy) (*types.FrameworkConnection, error)
Controls(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.ControlOrderBy, filter *types.ControlFilter) (*types.ControlConnection, error)
@@ -7039,6 +7041,17 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
}
return e.complexity.Organization.ProcessingActivities(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.ProcessingActivityOrderBy), args["filter"].(*types.ProcessingActivityFilter)), true
case "Organization.profiles":
if e.complexity.Organization.Profiles == nil {
break
}
args, err := ec.field_Organization_profiles_args(ctx, rawArgs)
if err != nil {
return 0, false
}
return e.complexity.Organization.Profiles(childComplexity, args["first"].(*int), args["after"].(*page.CursorKey), args["last"].(*int), args["before"].(*page.CursorKey), args["orderBy"].(*types.ProfileOrderBy), args["filter"].(*types.ProfileFilter)), true
case "Organization.rightsRequests":
if e.complexity.Organization.RightsRequests == nil {
break
@@ -10101,9 +10114,9 @@ func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler {
ec.unmarshalInputNonconformityOrder,
ec.unmarshalInputObligationFilter,
ec.unmarshalInputObligationOrder,
ec.unmarshalInputPeopleFilter,
ec.unmarshalInputProcessingActivityFilter,
ec.unmarshalInputProcessingActivityOrder,
ec.unmarshalInputProfileFilter,
ec.unmarshalInputProfileOrder,
ec.unmarshalInputPublishDocumentVersionInput,
ec.unmarshalInputRequestSignatureInput,
@@ -11793,7 +11806,7 @@ input RiskFilter {
snapshotId: ID
}
input PeopleFilter {
input ProfileFilter {
excludeContractEnded: Boolean
}
@@ -11880,6 +11893,15 @@ type Organization implements Node {
headquarterAddress: String
context: OrganizationContext @goField(forceResolver: true)
profiles(
first: Int
after: CursorKey
last: Int
before: CursorKey
orderBy: ProfileOrder
filter: ProfileFilter
): ProfileConnection! @goField(forceResolver: true)
slackConnections(
first: Int
after: CursorKey
@@ -18211,6 +18233,42 @@ func (ec *executionContext) field_Organization_processingActivities_args(ctx con
return args, nil
}
func (ec *executionContext) field_Organization_profiles_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
var err error
args := map[string]any{}
arg0, err := graphql.ProcessArgField(ctx, rawArgs, "first", ec.unmarshalOInt2ᚖint)
if err != nil {
return nil, err
}
args["first"] = arg0
arg1, err := graphql.ProcessArgField(ctx, rawArgs, "after", ec.unmarshalOCursorKey2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋpageᚐCursorKey)
if err != nil {
return nil, err
}
args["after"] = arg1
arg2, err := graphql.ProcessArgField(ctx, rawArgs, "last", ec.unmarshalOInt2ᚖint)
if err != nil {
return nil, err
}
args["last"] = arg2
arg3, err := graphql.ProcessArgField(ctx, rawArgs, "before", ec.unmarshalOCursorKey2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋpageᚐCursorKey)
if err != nil {
return nil, err
}
args["before"] = arg3
arg4, err := graphql.ProcessArgField(ctx, rawArgs, "orderBy", ec.unmarshalOProfileOrder2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProfileOrderBy)
if err != nil {
return nil, err
}
args["orderBy"] = arg4
arg5, err := graphql.ProcessArgField(ctx, rawArgs, "filter", ec.unmarshalOProfileFilter2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProfileFilter)
if err != nil {
return nil, err
}
args["filter"] = arg5
return args, nil
}
func (ec *executionContext) field_Organization_rightsRequests_args(ctx context.Context, rawArgs map[string]any) (map[string]any, error) {
var err error
args := map[string]any{}
@@ -20272,6 +20330,8 @@ func (ec *executionContext) fieldContext_Asset_organization(_ context.Context, f
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -20719,6 +20779,8 @@ func (ec *executionContext) fieldContext_Audit_organization(_ context.Context, f
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -21687,6 +21749,8 @@ func (ec *executionContext) fieldContext_ContinualImprovement_organization(_ con
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -22336,6 +22400,8 @@ func (ec *executionContext) fieldContext_Control_organization(_ context.Context,
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -24987,6 +25053,8 @@ func (ec *executionContext) fieldContext_CustomDomain_organization(_ context.Con
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -25580,6 +25648,8 @@ func (ec *executionContext) fieldContext_DataProtectionImpactAssessment_organiza
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -26330,6 +26400,8 @@ func (ec *executionContext) fieldContext_Datum_organization(_ context.Context, f
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -28477,6 +28549,8 @@ func (ec *executionContext) fieldContext_Document_organization(_ context.Context
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -31302,6 +31376,8 @@ func (ec *executionContext) fieldContext_Framework_organization(_ context.Contex
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -32767,6 +32843,8 @@ func (ec *executionContext) fieldContext_Meeting_organization(_ context.Context,
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -39456,6 +39534,8 @@ func (ec *executionContext) fieldContext_Nonconformity_organization(_ context.Co
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -40284,6 +40364,8 @@ func (ec *executionContext) fieldContext_Obligation_organization(_ context.Conte
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -41222,6 +41304,55 @@ func (ec *executionContext) fieldContext_Organization_context(_ context.Context,
return fc, nil
}
func (ec *executionContext) _Organization_profiles(ctx context.Context, field graphql.CollectedField, obj *types.Organization) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
ec.OperationContext,
field,
ec.fieldContext_Organization_profiles,
func(ctx context.Context) (any, error) {
fc := graphql.GetFieldContext(ctx)
return ec.resolvers.Organization().Profiles(ctx, obj, fc.Args["first"].(*int), fc.Args["after"].(*page.CursorKey), fc.Args["last"].(*int), fc.Args["before"].(*page.CursorKey), fc.Args["orderBy"].(*types.ProfileOrderBy), fc.Args["filter"].(*types.ProfileFilter))
},
nil,
ec.marshalNProfileConnection2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProfileConnection,
true,
true,
)
}
func (ec *executionContext) fieldContext_Organization_profiles(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "Organization",
Field: field,
IsMethod: true,
IsResolver: true,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
switch field.Name {
case "totalCount":
return ec.fieldContext_ProfileConnection_totalCount(ctx, field)
case "edges":
return ec.fieldContext_ProfileConnection_edges(ctx, field)
case "pageInfo":
return ec.fieldContext_ProfileConnection_pageInfo(ctx, field)
}
return nil, fmt.Errorf("no field named %q was found under type ProfileConnection", field.Name)
},
}
defer func() {
if r := recover(); r != nil {
err = ec.Recover(ctx, r)
ec.Error(ctx, err)
}
}()
ctx = graphql.WithFieldContext(ctx, fc)
if fc.Args, err = ec.field_Organization_profiles_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
ec.Error(ctx, err)
return fc, err
}
return fc, nil
}
func (ec *executionContext) _Organization_slackConnections(ctx context.Context, field graphql.CollectedField, obj *types.Organization) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
@@ -42804,6 +42935,8 @@ func (ec *executionContext) fieldContext_ProcessingActivity_organization(_ conte
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -45175,6 +45308,8 @@ func (ec *executionContext) fieldContext_RightsRequest_organization(_ context.Co
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -46197,6 +46332,8 @@ func (ec *executionContext) fieldContext_Risk_organization(_ context.Context, fi
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -47631,6 +47768,8 @@ func (ec *executionContext) fieldContext_Snapshot_organization(_ context.Context
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -48235,6 +48374,8 @@ func (ec *executionContext) fieldContext_StateOfApplicability_organization(_ con
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -48949,6 +49090,8 @@ func (ec *executionContext) fieldContext_Task_organization(_ context.Context, fi
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -49562,6 +49705,8 @@ func (ec *executionContext) fieldContext_TransferImpactAssessment_organization(_
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -50326,6 +50471,8 @@ func (ec *executionContext) fieldContext_TrustCenter_organization(_ context.Cont
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -51855,6 +52002,8 @@ func (ec *executionContext) fieldContext_TrustCenterFile_organization(_ context.
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -54832,6 +54981,8 @@ func (ec *executionContext) fieldContext_Vendor_organization(_ context.Context,
return ec.fieldContext_Organization_headquarterAddress(ctx, field)
case "context":
return ec.fieldContext_Organization_context(ctx, field)
case "profiles":
return ec.fieldContext_Organization_profiles(ctx, field)
case "slackConnections":
return ec.fieldContext_Organization_slackConnections(ctx, field)
case "frameworks":
@@ -65181,33 +65332,6 @@ func (ec *executionContext) unmarshalInputObligationOrder(ctx context.Context, o
return it, nil
}
func (ec *executionContext) unmarshalInputPeopleFilter(ctx context.Context, obj any) (types.PeopleFilter, error) {
var it types.PeopleFilter
asMap := map[string]any{}
for k, v := range obj.(map[string]any) {
asMap[k] = v
}
fieldsInOrder := [...]string{"excludeContractEnded"}
for _, k := range fieldsInOrder {
v, ok := asMap[k]
if !ok {
continue
}
switch k {
case "excludeContractEnded":
ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("excludeContractEnded"))
data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v)
if err != nil {
return it, err
}
it.ExcludeContractEnded = data
}
}
return it, nil
}
func (ec *executionContext) unmarshalInputProcessingActivityFilter(ctx context.Context, obj any) (types.ProcessingActivityFilter, error) {
var it types.ProcessingActivityFilter
asMap := map[string]any{}
@@ -65269,6 +65393,33 @@ func (ec *executionContext) unmarshalInputProcessingActivityOrder(ctx context.Co
return it, nil
}
func (ec *executionContext) unmarshalInputProfileFilter(ctx context.Context, obj any) (types.ProfileFilter, error) {
var it types.ProfileFilter
asMap := map[string]any{}
for k, v := range obj.(map[string]any) {
asMap[k] = v
}
fieldsInOrder := [...]string{"excludeContractEnded"}
for _, k := range fieldsInOrder {
v, ok := asMap[k]
if !ok {
continue
}
switch k {
case "excludeContractEnded":
ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("excludeContractEnded"))
data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v)
if err != nil {
return it, err
}
it.ExcludeContractEnded = data
}
}
return it, nil
}
func (ec *executionContext) unmarshalInputProfileOrder(ctx context.Context, obj any) (types.ProfileOrderBy, error) {
var it types.ProfileOrderBy
asMap := map[string]any{}
@@ -79557,6 +79708,42 @@ func (ec *executionContext) _Organization(ctx context.Context, sel ast.Selection
continue
}
out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
case "profiles":
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._Organization_profiles(ctx, field, obj)
if res == graphql.Null {
atomic.AddUint32(&fs.Invalids, 1)
}
return res
}
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 "slackConnections":
field := field
@@ -94630,6 +94817,20 @@ func (ec *executionContext) marshalNProfile2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋ
return ec._Profile(ctx, sel, v)
}
func (ec *executionContext) marshalNProfileConnection2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProfileConnection(ctx context.Context, sel ast.SelectionSet, v types.ProfileConnection) graphql.Marshaler {
return ec._ProfileConnection(ctx, sel, &v)
}
func (ec *executionContext) marshalNProfileConnection2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProfileConnection(ctx context.Context, sel ast.SelectionSet, v *types.ProfileConnection) graphql.Marshaler {
if v == nil {
if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
}
return graphql.Null
}
return ec._ProfileConnection(ctx, sel, v)
}
func (ec *executionContext) marshalNProfileEdge2ᚕᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProfileEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*types.ProfileEdge) graphql.Marshaler {
ret := make(graphql.Array, len(v))
var wg sync.WaitGroup
@@ -99281,6 +99482,22 @@ func (ec *executionContext) marshalOProfile2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋ
return ec._Profile(ctx, sel, v)
}
func (ec *executionContext) unmarshalOProfileFilter2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProfileFilter(ctx context.Context, v any) (*types.ProfileFilter, error) {
if v == nil {
return nil, nil
}
res, err := ec.unmarshalInputProfileFilter(ctx, v)
return &res, graphql.ErrorOnPath(ctx, err)
}
func (ec *executionContext) unmarshalOProfileOrder2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProfileOrderBy(ctx context.Context, v any) (*types.ProfileOrderBy, error) {
if v == nil {
return nil, nil
}
res, err := ec.unmarshalInputProfileOrder(ctx, v)
return &res, graphql.ErrorOnPath(ctx, err)
}
func (ec *executionContext) marshalOReport2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐReport(ctx context.Context, sel ast.SelectionSet, v *types.Report) graphql.Marshaler {
if v == nil {
return graphql.Null

Some files were not shown because too many files have changed in this diff Show More