2022-08-16 18:04:06 -07:00
|
|
|
import { GetServerSideProps } from "next";
|
2022-11-20 18:52:24 -08:00
|
|
|
import PersonPage from "../../../components/PersonPage";
|
2022-08-16 18:04:06 -07:00
|
|
|
import fetchAPI from "../../../lib/fetch";
|
2022-11-20 18:52:24 -08:00
|
|
|
import { PartialMember, User } from "../../../lib/types";
|
2022-08-16 18:04:06 -07:00
|
|
|
|
|
|
|
interface Props {
|
|
|
|
user: User;
|
2022-11-20 13:05:51 -08:00
|
|
|
partialMembers: PartialMember[];
|
2022-08-16 18:04:06 -07:00
|
|
|
}
|
|
|
|
|
2022-11-20 13:05:51 -08:00
|
|
|
export default function Index({ user, partialMembers }: Props) {
|
2022-11-20 18:52:24 -08:00
|
|
|
return <PersonPage person={user} />;
|
2022-08-16 18:04:06 -07:00
|
|
|
}
|
|
|
|
|
2022-11-20 07:04:53 -08:00
|
|
|
export const getServerSideProps: GetServerSideProps = async (context) => {
|
2022-11-20 16:58:17 -08:00
|
|
|
const name = context.params!.user;
|
2022-11-20 07:04:53 -08:00
|
|
|
try {
|
2022-11-20 13:05:51 -08:00
|
|
|
const [userResponse, partialMembersResponse] = await Promise.allSettled([
|
2022-11-20 16:58:17 -08:00
|
|
|
fetchAPI<User>(`/users/${name}`),
|
|
|
|
fetchAPI<PartialMember[]>(`/users/${name}/members`),
|
2022-11-20 13:05:51 -08:00
|
|
|
]);
|
2022-11-20 13:35:10 -08:00
|
|
|
if (userResponse.status === "rejected")
|
|
|
|
throw new Error("Could not fetch user");
|
2022-11-20 13:05:51 -08:00
|
|
|
const user = userResponse.value;
|
2022-11-20 13:35:10 -08:00
|
|
|
const partialMembers =
|
|
|
|
partialMembersResponse.status === "fulfilled"
|
|
|
|
? partialMembersResponse.value
|
|
|
|
: [];
|
2022-11-20 13:05:51 -08:00
|
|
|
return { props: { user, partialMembers } };
|
2022-11-20 07:04:53 -08:00
|
|
|
} catch (e) {
|
|
|
|
console.log(e);
|
|
|
|
return { notFound: true };
|
|
|
|
}
|
2022-11-18 05:11:52 -08:00
|
|
|
};
|