import React, { useEffect, useMemo } from "react";
import Content from "../components/Content/Content";
import Chart from "../components/Chart/Chart";
import Loader from "../components/Loader/Loader";
import Status, { WhySignIn } from "../components/Status/Status";
import Error from "../components/Error/Error";
import Link from "../components/Link/Link";
import { Title } from "../components/Text/Text";
import Table from "../components/Table/Table";
import useIssues from "../hooks/useIssues";
import useFirebase from "../hooks/useFirebase";
import useReposStore from "../hooks/useReposStore";
import useTokenStore from "../hooks/useTokenStore";
import useRouteParams from "../hooks/useRouteParams";
import addStats from "../utils/addStats";
import { Route } from "../routes";
function Milestone() {
const { signIn } = useFirebase();
const [token] = useTokenStore();
const { addRepo } = useReposStore();
const { owner, repo, number } = useRouteParams(Route.milestone);
// Save the repo?
useEffect(() => {
document.title = `${owner}/${repo}/${number}`;
addRepo(owner, repo);
}, [owner, repo, number]);
const res = useIssues([[owner, repo, number]]);
const { data } = res;
const milestone = useMemo(() => {
if (!data.length) {
return null;
}
return addStats(data[0]);
// All the data arrive at the same time.
}, [data.length]);
useEffect(() => {
if (milestone?.title) {
document.title = milestone.title;
}
}, [milestone]);
if (!token) {
return (
<>
Sign In
{" "}
to view your milestone
>
);
}
if (res.error) {
return (
);
}
if (res.loading) {
return (
);
}
// TODO?
if (!milestone) {
return null;
}
return (
{milestone.title}
);
}
export default Milestone;