feat: update ViewDetailDialog; conditionally display target roles based on user permissions

This commit is contained in:
Yoga Pangestu 2026-09-04 10:16:12 +07:00
parent ceeb1e325d
commit 6ec257a1cc

View File

@ -135,6 +135,7 @@ export default function AnnouncementIndex({
<ViewDetailDialog <ViewDetailDialog
open={viewing !== null} open={viewing !== null}
showTargetRoles={canCreate || canUpdate}
onOpenChange={(open) => { onOpenChange={(open) => {
if (!open) { if (!open) {
setViewing(null); setViewing(null);
@ -176,10 +177,12 @@ function ViewDetailDialog({
open, open,
onOpenChange, onOpenChange,
announcement, announcement,
showTargetRoles,
}: { }: {
open: boolean; open: boolean;
onOpenChange: (open: boolean) => void; onOpenChange: (open: boolean) => void;
announcement: Announcement | null; announcement: Announcement | null;
showTargetRoles: boolean;
}) { }) {
return ( return (
<Dialog open={open} onOpenChange={onOpenChange}> <Dialog open={open} onOpenChange={onOpenChange}>
@ -200,18 +203,20 @@ function ViewDetailDialog({
)} )}
</span> </span>
<div className="grid gap-1"> {showTargetRoles && (
<Label className="text-muted-foreground"> <div className="grid gap-1">
Ditujukan Untuk <Label className="text-muted-foreground">
</Label> Ditujukan Untuk
<div className="flex flex-wrap gap-1"> </Label>
{announcement.target_roles.map((role) => ( <div className="flex flex-wrap gap-1">
<Badge key={role} variant="secondary"> {announcement.target_roles.map((role) => (
{AnnouncementTargetRoleLabels[role]} <Badge key={role} variant="secondary">
</Badge> {AnnouncementTargetRoleLabels[role]}
))} </Badge>
))}
</div>
</div> </div>
</div> )}
<div className="grid gap-1"> <div className="grid gap-1">
<Label className="text-muted-foreground"> <Label className="text-muted-foreground">