feat(frontend): member type

This commit is contained in:
Sam 2022-10-27 17:11:10 +02:00
parent 773f20d135
commit ec980bc67f
2 changed files with 55 additions and 1 deletions

View file

@ -11,13 +11,25 @@ export interface User {
avatar_urls: string[] | null; avatar_urls: string[] | null;
links: string[] | null; links: string[] | null;
members: PartialMember[]; members: PartialMember[];
names: Name[];
pronouns: Pronoun[];
fields: Field[]; fields: Field[];
} }
export interface PartialMember { export interface PartialMember {
id: string; id: string;
name: string; name: string;
avatar_url: string | null; avatar_urls: string[] | null;
}
export interface Member extends PartialMember {
bio: string | null;
links: string[] | null;
id: string;
name: string;
avatar_urls: string[] | null;
user?: PartialUser;
} }
export interface Name { export interface Name {
@ -71,3 +83,10 @@ export interface SignupRequest {
ticket: string; ticket: string;
invite_code?: string; invite_code?: string;
} }
export interface PartialUser {
id: string;
username: string;
display_name: string | null;
avatar_urls: string[] | null;
}

View file

@ -0,0 +1,35 @@
import { GetServerSideProps } from "next";
import fetchAPI from "../../../lib/fetch";
import { Member, User } from "../../../lib/types";
import { userState } from "../../../lib/state";
import { useRecoilValue } from "recoil";
interface Props {
member: Member;
}
export default function MemberPage({ member }: Props) {
const isOwnMember = useRecoilValue(userState)?.id === member.user?.id;
return (
<>
<div>hi! this is {isOwnMember ? "" : "not "}your own member.</div>
<h1>name: {member.name}</h1>
<p>{member.bio}</p>
</>
);
}
export const getServerSideProps: GetServerSideProps = async (context) => {
try {
const member = await fetchAPI<Member>(
`/users/${context.params!.user}/members/${context.params!.member}`
);
return { props: { member } };
} catch (e) {
console.log(e);
return { notFound: true };
}
};