Fix merge and handle display of unpersisted trusct center document access status

Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
Émile Ré
2025-12-10 13:55:18 +01:00
parent c8e3636bf3
commit 15b3493bc9
11 changed files with 322 additions and 225 deletions

View File

@@ -85,7 +85,9 @@ export function TrustCenterAccessEditForm(props: TrustCenterAccessEditFormProps)
setDocumentAccesses((prev) => prev.map(element => ({...element, status: "GRANTED"})))
}, [])
const handleRejectOrRevokeAllDocumentAccess = useCallback(() => {
setDocumentAccesses((prev) => prev.map(element => ({...element, status: initialStatusByID[element.id] === "GRANTED" ? "REVOKED" : "REJECTED"})))
setDocumentAccesses((prev) => prev
.map(element => ({...element, status: initialStatusByID[element.id] === "GRANTED" ? "REVOKED" : "REJECTED"}))
)
}, [initialStatusByID])
const editSchema = z.object({
@@ -102,21 +104,23 @@ export function TrustCenterAccessEditForm(props: TrustCenterAccessEditFormProps)
});
const handleSubmit = editForm.handleSubmit(async (data) => {
const documents: {id: string, status: TrustCenterDocumentAccessStatus}[] = []
const reports: {id: string, status: TrustCenterDocumentAccessStatus}[] = []
const trustCenterFiles: {id: string, status: TrustCenterDocumentAccessStatus}[] = [];
const documents: { id: string, status: TrustCenterDocumentAccessStatus }[] = []
const reports: { id: string, status: TrustCenterDocumentAccessStatus }[] = []
const trustCenterFiles: { id: string, status: TrustCenterDocumentAccessStatus }[] = []
for (const docAccess of documentAccesses) {
switch (docAccess.type) {
case "document":
documents.push({id: docAccess.id, status: docAccess.status});
break;
case "report":
reports.push({id: docAccess.id, status: docAccess.status});
break;
case "file":
trustCenterFiles.push({id: docAccess.id, status: docAccess.status});
break;
if (docAccess.persisted || docAccess.status !== "REQUESTED") {
switch (docAccess.type) {
case "document":
documents.push({id: docAccess.id, status: docAccess.status});
break;
case "report":
reports.push({id: docAccess.id, status: docAccess.status});
break;
case "file":
trustCenterFiles.push({id: docAccess.id, status: docAccess.status});
break;
}
}
}

View File

@@ -1,5 +1,5 @@
import type { TrustCenterDocumentAccessStatus } from "@probo/coredata";
import { getTrustCenterDocumentAccessStatusBadgeVariant, type TrustCenterDocumentAccessInfo } from "@probo/helpers";
import { getTrustCenterDocumentAccessStatusBadgeVariant, getTrustCenterDocumentAccessStatusLabel, type TrustCenterDocumentAccessInfo } from "@probo/helpers";
import { useTranslate } from "@probo/i18n";
import { Badge, Button, Table, Tbody, Td, Th, Thead, Tr } from "@probo/ui";
@@ -25,7 +25,7 @@ export function TrustCenterDocumentAccessList(props: TrustCenterDocumentAccessLi
<h4 className="font-medium text-txt-primary">
{__("Document Access Permissions")}
</h4>
<div className="ml-auto flex items-center gap-4">
<div className="ml-auto flex items-center gap-2">
{showGrantCTA &&
<Button
type="button"
@@ -83,11 +83,13 @@ export function TrustCenterDocumentAccessList(props: TrustCenterDocumentAccessLi
</div>
</Td>
<Td>
<Badge variant={getTrustCenterDocumentAccessStatusBadgeVariant(docAccess.status)}>
{docAccess.status}
</Badge>
{(docAccess.persisted || docAccess.status !== "REQUESTED") &&
<Badge variant={getTrustCenterDocumentAccessStatusBadgeVariant(docAccess.status)}>
{getTrustCenterDocumentAccessStatusLabel(docAccess.status, __)}
</Badge>
}
</Td>
<Td className="flex justify-end">
<Td className="flex justify-end gap-2">
{docAccess.status !== "GRANTED" &&
<Button
type="button"
@@ -102,10 +104,13 @@ export function TrustCenterDocumentAccessList(props: TrustCenterDocumentAccessLi
<Button
type="button"
variant="danger"
onClick={() => onUpdateStatus(docAccess, initialStatusByID[docAccess.id] === "GRANTED" ? "REVOKED" : "REJECTED")}
onClick={() => onUpdateStatus(
docAccess,
docAccess.id && initialStatusByID[docAccess.id] === "GRANTED" ? "REVOKED" : "REJECTED"
)}
className="text-xs h-7 min-h-7"
>
{initialStatusByID[docAccess.id] === "GRANTED" ? __("Revoke") : __("Reject")}
{docAccess.id && initialStatusByID[docAccess.id] === "GRANTED" ? __("Revoke") : __("Reject")}
</Button>
}
</Td>