Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
Bryan Frimin
2026-03-20 16:55:49 +01:00
parent 7b320916af
commit 3b5122da5e

View File

@@ -5,23 +5,23 @@ import {
Button, Button,
IconChevronDown, IconChevronDown,
Spinner, Spinner,
Table,
Tbody, Tbody,
Td, Td,
Th, Th,
Thead, Thead,
Table,
Tr, Tr,
} from "@probo/ui"; } from "@probo/ui";
import { import {
type PreloadedQuery,
graphql, graphql,
type PreloadedQuery,
useFragment, useFragment,
usePaginationFragment, usePaginationFragment,
usePreloadedQuery, usePreloadedQuery,
} from "react-relay"; } from "react-relay";
import type { AuditLogSettingsPageQuery } from "#/__generated__/iam/AuditLogSettingsPageQuery.graphql";
import type { AuditLogSettingsPageFragment$key } from "#/__generated__/iam/AuditLogSettingsPageFragment.graphql"; import type { AuditLogSettingsPageFragment$key } from "#/__generated__/iam/AuditLogSettingsPageFragment.graphql";
import type { AuditLogSettingsPageQuery } from "#/__generated__/iam/AuditLogSettingsPageQuery.graphql";
import type { AuditLogSettingsPageRefetchQuery } from "#/__generated__/iam/AuditLogSettingsPageRefetchQuery.graphql"; import type { AuditLogSettingsPageRefetchQuery } from "#/__generated__/iam/AuditLogSettingsPageRefetchQuery.graphql";
import type { AuditLogSettingsPageRowFragment$key } from "#/__generated__/iam/AuditLogSettingsPageRowFragment.graphql"; import type { AuditLogSettingsPageRowFragment$key } from "#/__generated__/iam/AuditLogSettingsPageRowFragment.graphql";
@@ -93,10 +93,10 @@ function ActionBadge({ action }: { action: string }) {
const verb = parts[parts.length - 1]; const verb = parts[parts.length - 1];
if ( if (
verb === "create" || verb === "create"
verb === "upload" || || verb === "upload"
verb === "import" || || verb === "import"
verb === "publish" || verb === "publish"
) { ) {
return <Badge variant="success" size="sm">{action}</Badge>; return <Badge variant="success" size="sm">{action}</Badge>;
} }
@@ -104,10 +104,10 @@ function ActionBadge({ action }: { action: string }) {
return <Badge variant="danger" size="sm">{action}</Badge>; return <Badge variant="danger" size="sm">{action}</Badge>;
} }
if ( if (
verb === "update" || verb === "update"
verb === "assign" || || verb === "assign"
verb === "unassign" || || verb === "unassign"
verb === "unarchive" || verb === "unarchive"
) { ) {
return <Badge variant="warning" size="sm">{action}</Badge>; return <Badge variant="warning" size="sm">{action}</Badge>;
} }
@@ -169,13 +169,13 @@ export function AuditLogSettingsPage(props: {
throw new Error("Relay node is not an organization"); throw new Error("Relay node is not an organization");
} }
const { data, loadNext, hasNext, isLoadingNext } = const { data, loadNext, hasNext, isLoadingNext }
usePaginationFragment< = usePaginationFragment<
AuditLogSettingsPageRefetchQuery, AuditLogSettingsPageRefetchQuery,
AuditLogSettingsPageFragment$key AuditLogSettingsPageFragment$key
>(auditLogSettingsPageFragment, organization); >(auditLogSettingsPageFragment, organization);
const entries = data?.auditLogEntries?.edges?.map((e) => e.node) ?? []; const entries = data?.auditLogEntries?.edges?.map(e => e.node) ?? [];
const totalCount = data?.auditLogEntries?.totalCount ?? 0; const totalCount = data?.auditLogEntries?.totalCount ?? 0;
return ( return (
@@ -189,13 +189,15 @@ export function AuditLogSettingsPage(props: {
</p> </p>
</div> </div>
{entries.length === 0 ? ( {entries.length === 0
? (
<div className="text-center py-8"> <div className="text-center py-8">
<p className="text-sm text-txt-tertiary"> <p className="text-sm text-txt-tertiary">
{__("No audit log entries yet.")} {__("No audit log entries yet.")}
</p> </p>
</div> </div>
) : ( )
: (
<div className="space-y-4"> <div className="space-y-4">
<p className="text-sm text-txt-tertiary"> <p className="text-sm text-txt-tertiary">
{`${__("Showing")} ${entries.length} ${__("of")} ${totalCount} ${__("entries")}`} {`${__("Showing")} ${entries.length} ${__("of")} ${totalCount} ${__("entries")}`}
@@ -210,7 +212,7 @@ export function AuditLogSettingsPage(props: {
</Tr> </Tr>
</Thead> </Thead>
<Tbody> <Tbody>
{entries.map((entry) => ( {entries.map(entry => (
<AuditLogEntryRow key={entry.id} entryKey={entry} /> <AuditLogEntryRow key={entry.id} entryKey={entry} />
))} ))}
</Tbody> </Tbody>