Refactor compliance page access page

Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
Émile Ré
2026-01-28 21:45:43 +04:00
parent 42557e1640
commit 7e92d5a165
18 changed files with 1341 additions and 1210 deletions

View File

@@ -1,84 +1,4 @@
import { graphql, useLazyLoadQuery, usePaginationFragment } from "react-relay";
import type {
TrustCenterAccessGraph_accesses$data,
TrustCenterAccessGraph_accesses$key,
} from "#/__generated__/core/TrustCenterAccessGraph_accesses.graphql";
import type { TrustCenterAccessGraphQuery } from "#/__generated__/core/TrustCenterAccessGraphQuery.graphql";
export const trustCenterAccessesPaginationFragment = graphql`
fragment TrustCenterAccessGraph_accesses on TrustCenter
@refetchable(queryName: "TrustCenterAccessGraphPaginationQuery") {
accesses(
first: $count
after: $cursor
orderBy: { field: CREATED_AT, direction: DESC }
) @connection(key: "TrustCenterAccessGraph_accesses") {
__id
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
edges {
cursor
node {
id
email
name
active
hasAcceptedNonDisclosureAgreement
createdAt
pendingRequestCount
activeCount
canUpdate: permission(action: "core:trust-center-access:update")
canDelete: permission(action: "core:trust-center-access:delete")
}
}
}
}
`;
export const trustCenterAccessesQuery = graphql`
query TrustCenterAccessGraphQuery(
$trustCenterId: ID!
$count: Int!
$cursor: CursorKey
) {
node(id: $trustCenterId) {
... on TrustCenter {
id
...TrustCenterAccessGraph_accesses
}
}
}
`;
export const createTrustCenterAccessMutation = graphql`
mutation TrustCenterAccessGraphCreateMutation(
$input: CreateTrustCenterAccessInput!
$connections: [ID!]!
) {
createTrustCenterAccess(input: $input) {
trustCenterAccessEdge @prependEdge(connections: $connections) {
cursor
node {
id
email
name
active
hasAcceptedNonDisclosureAgreement
createdAt
pendingRequestCount
activeCount
canUpdate: permission(action: "core:trust-center-access:update")
canDelete: permission(action: "core:trust-center-access:delete")
}
}
}
}
`;
import { graphql } from "react-relay";
export const updateTrustCenterAccessMutation = graphql`
mutation TrustCenterAccessGraphUpdateMutation(
@@ -100,17 +20,6 @@ export const updateTrustCenterAccessMutation = graphql`
}
`;
export const deleteTrustCenterAccessMutation = graphql`
mutation TrustCenterAccessGraphDeleteMutation(
$input: DeleteTrustCenterAccessInput!
$connections: [ID!]!
) {
deleteTrustCenterAccess(input: $input) {
deletedTrustCenterAccessId @deleteEdge(connections: $connections)
}
}
`;
export const loadTrustCenterAccessDocumentAccessesQuery = graphql`
query TrustCenterAccessGraphLoadDocumentAccessesQuery($accessId: ID!) {
node(id: $accessId) {
@@ -151,54 +60,3 @@ export const loadTrustCenterAccessDocumentAccessesQuery = graphql`
}
}
`;
interface PaginatedData {
data: TrustCenterAccessGraph_accesses$data | null;
hasNext: boolean;
loadMore: () => void;
isLoadingNext: boolean;
}
export function useTrustCenterAccesses(trustCenterId: string): PaginatedData {
const data = useLazyLoadQuery<TrustCenterAccessGraphQuery>(
trustCenterAccessesQuery,
{
trustCenterId: trustCenterId || "",
count: 10,
cursor: null,
},
{ fetchPolicy: "store-and-network" },
);
const trustCenter = data?.node;
const {
data: paginationData,
loadNext,
hasNext,
isLoadingNext,
} = usePaginationFragment<
TrustCenterAccessGraphQuery,
TrustCenterAccessGraph_accesses$key
>(trustCenterAccessesPaginationFragment, trustCenter);
if (!trustCenterId) {
return {
data: null,
hasNext: false,
loadMore: () => {},
isLoadingNext: false,
};
}
const loadMore = () => {
loadNext(10);
};
return {
data: paginationData,
hasNext,
loadMore,
isLoadingNext,
};
}