Skip to content

Commit

Permalink
Merge pull request #5 from Java-and-Script/user-page-user-component
Browse files Browse the repository at this point in the history
유저 페이지에 유저 컴포넌트 추가
  • Loading branch information
1g2g authored Jan 11, 2024
2 parents 0d0cf8e + fb344d4 commit a935cdd
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 9 deletions.
17 changes: 17 additions & 0 deletions src/app/(root)/user/[username]/_components/BackButton.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
'use client';

import BackArrow from '@/assets/backArrow.svg';
import Image from 'next/image';
import { useRouter } from 'next/navigation';
import { ReactNode } from 'react';

export default function BackButton({ children }: { children: ReactNode }) {
const router = useRouter();

return (
<button className="flex items-center gap-3" onClick={() => router.back()}>
<Image src={BackArrow} alt="BackArrow" />
<span className="font-bold">{children}</span>
</button>
);
}
25 changes: 21 additions & 4 deletions src/app/(root)/user/[username]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,27 @@
import BackButton from './_components/BackButton';
import { MemberItem } from '@/app/_components/MemberItem';
import { PostItemList } from '@/app/_components/PostItemList';
import { getPostDatasByUsername, getUsers } from '@/app/utils';
import { getPostDatasByUsername, getUser, getUsers } from '@/app/utils';
import BackArrow from '@/assets/backArrow.svg';
import Image from 'next/image';

export default function Page({ params }: { params: { username: string } }) {
const postDatas = getPostDatasByUsername(params.username);
export default function Page({
params: { username },
}: {
params: { username: string };
}) {
const postDatas = getPostDatasByUsername(username);
const userData = getUser(username);

return <PostItemList postDatas={postDatas} />;
return (
<>
<BackButton>다른 팀원 보기</BackButton>
<div className="flex flex-col gap-4">
<MemberItem key={username} {...userData} />
<PostItemList postDatas={postDatas} />
</div>
</>
);
}

export function generateStaticParams() {
Expand Down
9 changes: 4 additions & 5 deletions src/app/_components/MemberItem/MemberItem.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
'use client';

import { useRouter } from 'next/navigation';
import Link from 'next/link';
import Image from 'next/image';

import GitHub from '@/assets/github.svg';
import { User } from '@/type/User';
import Image from 'next/image';
import Link from 'next/link';
import { useRouter } from 'next/navigation';

export const MemberItem = ({
name,
Expand All @@ -16,7 +15,7 @@ export const MemberItem = ({
const router = useRouter();
return (
<div
className="flex items-center gap-[24px] max-w-[800px] mx-auto h-[98px] pt-[26px] pb-[26px] pr-[26px] cursor-pointer "
className="flex items-center gap-[24px] w-[100%] mx-auto h-[98px] pt-[26px] pb-[26px] cursor-pointer"
onClick={() => router.push(`/user/${name}`)}
>
<div className="w-[50px] h-[50px] border-solid border-[1px] rounded-[100%] border-[#9ca3af] overflow-hidden">
Expand Down
7 changes: 7 additions & 0 deletions src/app/utils/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,10 @@ export function getUsersByRole(role: string) {
const users = getUsers();
return users.filter((user) => user.role === role);
}

export function getUser(name: string) {
const userContent = readFileSync(`./public/${name}/index.md`, 'utf8');
const { data } = matter(userContent) as any;

return { name, ...data };
}
3 changes: 3 additions & 0 deletions src/assets/backArrow.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit a935cdd

Please sign in to comment.