86 lines
3.7 KiB
TypeScript
86 lines
3.7 KiB
TypeScript
import { Link } from '@inertiajs/react';
|
|
import {
|
|
publicationHistoryActions,
|
|
type PublicationHistorySummary,
|
|
} from '@/lib/partnership-history';
|
|
import { labels } from '@/pages/partnerships/shared';
|
|
|
|
const status = (value: string | null) =>
|
|
value === null
|
|
? 'Estado não registado ou reservado'
|
|
: (labels[value] ?? 'Estado não identificado no registo');
|
|
export default function PublicationSummary({
|
|
value,
|
|
}: {
|
|
value: PublicationHistorySummary;
|
|
}) {
|
|
return (
|
|
<section
|
|
className="space-y-3 rounded border p-4 break-words"
|
|
aria-label="Histórico e decisões"
|
|
>
|
|
<h2 className="text-xl font-bold">Histórico e decisões</h2>
|
|
<p>
|
|
Até {value.limit}{' '}
|
|
{value.limit === 1
|
|
? 'alteração mais recente'
|
|
: 'alterações mais recentes'}
|
|
. Os nomes são os disponíveis no cadastro actual; as decisões e
|
|
motivos são os que ficaram guardados.
|
|
</p>
|
|
{!value.entries.length ? (
|
|
<p>Ainda não existem alterações guardadas para apresentar.</p>
|
|
) : (
|
|
<ol className="space-y-4">
|
|
{value.entries.map((entry, index) => (
|
|
<li key={index} className="space-y-1 border-l-2 pl-3">
|
|
<p className="font-semibold">
|
|
Versão {entry.version ?? 'não registada'} ·{' '}
|
|
{entry.restricted
|
|
? 'Conteúdo reservado'
|
|
: (publicationHistoryActions[
|
|
entry.action ?? ''
|
|
] ?? 'Alteração registada')}
|
|
</p>
|
|
{entry.restricted ? (
|
|
<p>
|
|
Os dados desta alteração não estão
|
|
disponíveis para esta conta. Consulte o
|
|
histórico para conhecer os limites do
|
|
registo.
|
|
</p>
|
|
) : (
|
|
<>
|
|
<p>
|
|
{entry.actor_name ??
|
|
'Autor não registado'}{' '}
|
|
·{' '}
|
|
{entry.occurred_at ??
|
|
'Data não registada'}
|
|
</p>
|
|
<p>
|
|
{status(entry.status_before)} →{' '}
|
|
{status(entry.status_after)}
|
|
</p>
|
|
{entry.reason !== null && (
|
|
<p className="whitespace-pre-wrap">
|
|
Motivo:{' '}
|
|
{entry.reason || 'Não indicado'}
|
|
</p>
|
|
)}
|
|
</>
|
|
)}
|
|
</li>
|
|
))}
|
|
</ol>
|
|
)}
|
|
{value.has_more && (
|
|
<p>Existem alterações anteriores no histórico completo.</p>
|
|
)}
|
|
<Link className="inline-block underline" href={value.href}>
|
|
Consultar versões e decisões da publicação
|
|
</Link>
|
|
</section>
|
|
);
|
|
}
|