feat(pull_requests): make the RepositoryPullRequestsView usable@@ -1,5 +1,5 @@
{
- "_generatedAtUnix": 1665610935850,
+ "_generatedAtUnix": 1665669388427,
"_hashAlgorithm": "sha1",
"_version": 2,
"islands": {
@@ -134,7 +134,7 @@
"pathSource": "./app/views/repositoryPullRequests/RepositoryPullRequestCreateView.tsx"
},
"RepositoryPullRequestsView": {
- "hash": "d9542080c146d970f90a3cfbf7bf76b7ea2db1a3",
+ "hash": "1ad2fff2166e8417a428852f7f4579d4f2ece30d",
"pathSource": "./app/views/repositoryPullRequests/RepositoryPullRequestsView.tsx"
},
"UserDashboardView": {
@@ -113,8 +113,8 @@ const postRepositoryPullRequestCreateAction: ReqHandler = async (
if (sourceParentOrg.slug === targetParentOrg.slug) {
fileDiffs = await repoService.getRepositoryRefDiff(
sourceRepo,
- sourceRepoFromBranch,
- targetRepoDestBranch
+ targetRepoDestBranch,
+ sourceRepoFromBranch
);
} else {
fileDiffs = await repoService.getRepositoryRemoteRefDiff(
@@ -41,7 +41,7 @@ const makeGetRepositoryRefDiff: ServiceMethodFactory<
const gitDiffRefsProcess = spawn(
"git",
- ["diff", `${refB}${refA != null ? `..${refA}` : ""}`],
+ ["diff", `${refA}${refB != null ? `..${refB}` : ""}`],
{
cwd: repoPath,
}
@@ -10,14 +10,23 @@ import { Grid, IslandWrapper, Layout, PageWrapper } from "../../components";
// app islands
import RepositoryHero from "../../islands/RepositoryHero";
+type PullRequestsFilter = "opened" | "closed" | "merged" | "all" | "search";
+
export interface RepositoryPullRequestsViewProps extends CommonProps {
parentOrg: Organization;
pullRequests: PullRequest[];
repo: RepositoryWithForkedFromRepo;
+ pullRequestsFilter?: PullRequestsFilter;
}
const RepositoryPullRequestsView: ReactView<RepositoryPullRequestsViewProps> =
- ({ commonProps, parentOrg, pullRequests, repo }) => {
+ ({
+ commonProps,
+ parentOrg,
+ pullRequests,
+ repo,
+ pullRequestsFilter = "all",
+ }) => {
return (
<Layout {...commonProps}>
<PageWrapper>
@@ -35,10 +44,111 @@ const RepositoryPullRequestsView: ReactView<RepositoryPullRequestsViewProps> =
New Pull Request
</a>
</Grid.Col>
+ <Grid.Col fluid style={{ marginTop: 24 }}>
+ <Grid.Row fluid alignItems={"center"} gap={16}>
+ <a
+ style={{
+ textDecoration:
+ pullRequestsFilter === "all" ? "underline" : "none",
+ }}
+ href={`/${parentOrg.slug}/${repo.slug}/pulls?filter=${
+ "all" as PullRequestsFilter
+ }`}
+ >
+ All
+ </a>
+ <a
+ style={{
+ textDecoration:
+ pullRequestsFilter === "opened" ? "underline" : "none",
+ }}
+ href={`/${parentOrg.slug}/${repo.slug}/pulls?filter=${
+ "opened" as PullRequestsFilter
+ }`}
+ >
+ Opened
+ </a>
+ <a
+ style={{
+ textDecoration:
+ pullRequestsFilter === "merged" ? "underline" : "none",
+ }}
+ href={`/${parentOrg.slug}/${repo.slug}/pulls?filter=${
+ "merged" as PullRequestsFilter
+ }`}
+ >
+ Merged
+ </a>
+ <a
+ style={{
+ textDecoration:
+ pullRequestsFilter === "closed" ? "underline" : "none",
+ }}
+ href={`/${parentOrg.slug}/${repo.slug}/pulls?filter=${
+ "closed" as PullRequestsFilter
+ }`}
+ >
+ Closed
+ </a>
+ </Grid.Row>
+ </Grid.Col>
<Grid.Col fluid style={{ marginTop: 32 }}>
- <pre>
- <code>{JSON.stringify(pullRequests, null, 2)}</code>
- </pre>
+ {pullRequests != null && pullRequests.length >= 1 ? (
+ pullRequests.map((pr, idx) => (
+ <Grid.Col
+ key={pr.id}
+ fluid
+ style={{ marginTop: idx === 0 ? 0 : 16 }}
+ >
+ <a href={`/${parentOrg.slug}/${repo.slug}/pulls/${pr.uid}`}>
+ #{pr.uid} - {pr.summary} [{pr.state}]
+ </a>
+ <span style={{ opacity: 0.67 }}>
+ wants to merge <code>{pr.sourceBranch}</code> into{" "}
+ <code>{pr.targetBranch}</code>
+ </span>
+ <Grid.Row
+ fluid
+ alignItems={"center"}
+ style={{ opacity: 0.67, marginTop: 4 }}
+ >
+ {new Date(pr.createdAt).getTime() <=
+ new Date(pr.updatedAt).getTime() && (
+ <span>
+ opened on {new Date(pr.createdAt).toLocaleString()}
+ </span>
+ )}
+ {((pr.closedAt == null &&
+ new Date(pr.updatedAt).getTime() >
+ new Date(pr.createdAt).getTime()) ||
+ (pr.closedAt != null &&
+ new Date(pr.updatedAt).getTime() <
+ new Date(pr.closedAt).getTime())) && (
+ <span>
+ updated on {new Date(pr.updatedAt).toLocaleString()}
+ </span>
+ )}
+ {pr.closedAt != null && (
+ <span>
+ closed on
+ {new Date(pr.closedAt).toLocaleString()}
+ </span>
+ )}
+ </Grid.Row>
+ </Grid.Col>
+ ))
+ ) : (
+ <div>
+ <h1>No Pull Request Yet</h1>
+ <p>
+ <span>Be the change you want to see, </span>
+ <a href={`/${parentOrg.slug}/${repo.slug}/pulls/new`}>
+ open the first Pull Request
+ </a>
+ <span> to this repository 🚀.</span>
+ </p>
+ </div>
+ )}
</Grid.Col>
</PageWrapper>
</Layout>