import { BsArrowDownRight, BsArrowUpRight } from "react-icons/bs"; import { useParams } from "react-router"; import { compare } from "compare-versions"; import { ReleaseRevision } from "../../data/types"; import { getAge } from "../../timeUtils"; import StatusLabel from "../common/StatusLabel"; import useNavigateWithSearchParams from "../../hooks/useNavigateWithSearchParams"; import { DateTime } from "luxon"; type RevisionsListProps = { releaseRevisions: ReleaseRevision[]; selectedRevision: number; }; export default function RevisionsList({ releaseRevisions, selectedRevision, }: RevisionsListProps) { const navigate = useNavigateWithSearchParams(); const { namespace, chart } = useParams(); const changeRelease = (newRevision: number) => { navigate(`/${namespace}/${chart}/installed/revision/${newRevision}`); }; return ( <> {releaseRevisions?.map((release, idx) => { const hasMultipleReleases = releaseRevisions.length > 1 && idx < releaseRevisions.length - 1; const prevRelease = hasMultipleReleases ? releaseRevisions[idx + 1] : null; const isRollback = release.description.startsWith("Rollback to "); return (
changeRelease(release.revision)} key={release.revision} className={`flex flex-col border border-gray-200 rounded-md mx-5 p-2 gap-4 cursor-pointer ${ release.revision === selectedRevision ? "border-revision-dark bg-white" : "border-revision-light bg-body-background" }`} >
#{release.revision}
{prevRelease ? compare(prevRelease.chart_ver, release.chart_ver, "!=") && ( <> {prevRelease.chart_ver} {compare( prevRelease.chart_ver, release.chart_ver, ">" ) ? ( ) : ( )} {release.chart_ver} ) : ""}
AGE:{getAge(release, releaseRevisions[idx - 1])}
); })} ); }