import type { ReactView } from "@ethicdevs/react-monolith";
import React from "react";
import type { Organization, User } from "@prisma/client";
import type {
CommonProps,
RepositoryFileDiff,
RepositoryWithForkedFromRepo,
} from "../../types";
import { Grid, IslandWrapper, Layout, PageWrapper } from "../../components";
import RepositoryFilesDiffsList from "../../islands/RepositoryFilesDiffsList";
import RepositoryHero from "../../islands/RepositoryHero";
export interface RepositoryCompareViewProps extends CommonProps {
currentUser: null | User;
filesDiffs: RepositoryFileDiff[];
parentOrg: Organization;
repo: RepositoryWithForkedFromRepo;
refA: string;
refB: string;
}
const RepositoryCompareView: ReactView<RepositoryCompareViewProps> = ({
commonProps,
filesDiffs,
parentOrg,
repo,
refA,
refB,
}) => {
return (
<Layout
{...commonProps}
showDrawerPrimary
orgSlug={parentOrg.slug}
repoSlug={repo.slug}
currentRef={refA}
>
<PageWrapper>
<IslandWrapper data-islandid={`${RepositoryHero.name}$$0`}>
<RepositoryHero
forkedFromRepo={repo.forkedFromRepo}
forksCount={repo.forks.length}
parentOrg={parentOrg}
path={`${refA}..${refB}`}
repo={repo}
separator={"/"}
/>
</IslandWrapper>
<Grid.Col fluid data-islandid={`${RepositoryFilesDiffsList.name}$$0`}>
<RepositoryFilesDiffsList
filesDiffs={filesDiffs}
themeScheme={commonProps.themeScheme}
orgSlug={parentOrg.slug}
repoSlug={repo.slug}
commitHash={refB}
/>
</Grid.Col>
</PageWrapper>
</Layout>
);
};
RepositoryCompareView.displayName = "RepositoryCompareView";
export default RepositoryCompareView;