import * as React from 'react'; import type { ICommit } from './CommitHistory'; import { CommitHistory } from './CommitHistory'; import type { IJarDiff } from './JarDiffs'; import { JarDiffs } from './JarDiffs'; import type { IBuildDiffInfo, IJenkinsInfo } from '../domain'; import type { IModalComponentProps } from '../presentation'; import { ModalBody, ModalFooter, ModalHeader } from '../presentation'; export interface IChangesModalProps extends IModalComponentProps { buildInfo: IBuildDiffInfo; commits: ICommit[]; jarDiffs: IJarDiff; nameItem: { name: string }; } const buildJenkinsLink = (jenkins: IJenkinsInfo, build: string): string => build ? `${jenkins.host}job/${jenkins.name}/${build}` : undefined; export const ChangesModal = ({ buildInfo, commits, dismissModal, jarDiffs, nameItem }: IChangesModalProps) => { const previousBuildLink = buildJenkinsLink(buildInfo.jenkins, buildInfo.ancestor); const currentBuildLink = buildJenkinsLink(buildInfo.jenkins, buildInfo.target); const hasJarChanges = Object.keys(jarDiffs).some((key: string) => jarDiffs[key].length > 0); return ( <> {`Changes to ${nameItem.name}`}
{buildInfo?.ancestor && (
Previous: {previousBuildLink ? ( {`Build: #${buildInfo.ancestor}`} ) : ( {`Build: #${buildInfo.ancestor}`} )}
)} {buildInfo?.target && (
Current: {currentBuildLink ? ( {`Build: #${buildInfo.target}`} ) : ( {`Build: #${buildInfo.target}`} )}
)}
{Boolean(commits?.length) && (

Commits

)} {hasJarChanges && (

JAR Changes

)}
Close } /> ); };