feat(media-request): show request status (#2465)
This commit is contained in:
@@ -1816,6 +1816,12 @@
|
|||||||
"partiallyAvailable": "Partial",
|
"partiallyAvailable": "Partial",
|
||||||
"available": "Available"
|
"available": "Available"
|
||||||
},
|
},
|
||||||
|
"status": {
|
||||||
|
"pending": "Pending",
|
||||||
|
"approved": "Approved",
|
||||||
|
"declined": "Declined",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
"toBeDetermined": "TBD"
|
"toBeDetermined": "TBD"
|
||||||
},
|
},
|
||||||
"mediaRequests-requestStats": {
|
"mediaRequests-requestStats": {
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ export default function MediaServerWidget({
|
|||||||
{(mediaRequest.requestedBy?.displayName ?? "") || "unknown"}
|
{(mediaRequest.requestedBy?.displayName ?? "") || "unknown"}
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Group>
|
</Group>
|
||||||
{mediaRequest.status === MediaRequestStatus.PendingApproval && (
|
{mediaRequest.status === MediaRequestStatus.PendingApproval ? (
|
||||||
<Group className="mediaRequests-list-item-pending-buttons" gap="2cqmin">
|
<Group className="mediaRequests-list-item-pending-buttons" gap="2cqmin">
|
||||||
<Tooltip label={t("pending.approve")}>
|
<Tooltip label={t("pending.approve")}>
|
||||||
<ActionIcon
|
<ActionIcon
|
||||||
@@ -187,6 +187,8 @@ export default function MediaServerWidget({
|
|||||||
</ActionIcon>
|
</ActionIcon>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</Group>
|
</Group>
|
||||||
|
) : (
|
||||||
|
<StatusBadge status={mediaRequest.status} />
|
||||||
)}
|
)}
|
||||||
</Stack>
|
</Stack>
|
||||||
</Group>
|
</Group>
|
||||||
@@ -197,6 +199,34 @@ export default function MediaServerWidget({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const statusMapping = {
|
||||||
|
[MediaRequestStatus.PendingApproval]: { color: "blue", label: (t) => t("pending") },
|
||||||
|
[MediaRequestStatus.Approved]: { color: "green", label: (t) => t("approved") },
|
||||||
|
[MediaRequestStatus.Declined]: { color: "red", label: (t) => t("declined") },
|
||||||
|
[MediaRequestStatus.Failed]: { color: "red", label: (t) => t("failed") },
|
||||||
|
} satisfies Record<
|
||||||
|
MediaRequestStatus,
|
||||||
|
{
|
||||||
|
color: string;
|
||||||
|
label: (t: ScopedTranslationFunction<"widget.mediaRequests-requestList.status">) => string;
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
|
interface StatusBadgeProps {
|
||||||
|
status: MediaRequestStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
const StatusBadge = ({ status }: StatusBadgeProps) => {
|
||||||
|
const { color, label } = statusMapping[status];
|
||||||
|
const tStatus = useScopedI18n("widget.mediaRequests-requestList.status");
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Badge size="xs" color={color} variant="light">
|
||||||
|
{label(tStatus)}
|
||||||
|
</Badge>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
function getAvailabilityProperties(
|
function getAvailabilityProperties(
|
||||||
mediaRequestAvailability: MediaAvailability,
|
mediaRequestAvailability: MediaAvailability,
|
||||||
t: ScopedTranslationFunction<"widget.mediaRequests-requestList">,
|
t: ScopedTranslationFunction<"widget.mediaRequests-requestList">,
|
||||||
@@ -206,10 +236,10 @@ function getAvailabilityProperties(
|
|||||||
return { color: "green", label: t("availability.available") };
|
return { color: "green", label: t("availability.available") };
|
||||||
case MediaAvailability.PartiallyAvailable:
|
case MediaAvailability.PartiallyAvailable:
|
||||||
return { color: "yellow", label: t("availability.partiallyAvailable") };
|
return { color: "yellow", label: t("availability.partiallyAvailable") };
|
||||||
case MediaAvailability.Pending:
|
|
||||||
return { color: "violet", label: t("availability.pending") };
|
|
||||||
case MediaAvailability.Processing:
|
case MediaAvailability.Processing:
|
||||||
return { color: "blue", label: t("availability.processing") };
|
return { color: "blue", label: t("availability.processing") };
|
||||||
|
case MediaAvailability.Pending:
|
||||||
|
return { color: "violet", label: t("availability.pending") };
|
||||||
default:
|
default:
|
||||||
return { color: "red", label: t("availability.unknown") };
|
return { color: "red", label: t("availability.unknown") };
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user