Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v1.0.0 #270

Merged
merged 61 commits into from
Apr 26, 2024
Merged
Show file tree
Hide file tree
Changes from 60 commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
4e55aec
refactor: 세부목표 isDone 요청에 debounce 추가 (#161)
Doeunnkimm Feb 2, 2024
92d28b4
chore: 스토리북 배포 dev브랜치 추가 (#189)
newminkyung Feb 28, 2024
4abdb29
chore: 추가된 Task 컴포넌트 디자인 적용 (타인 지도의 task) (#185)
Doeunnkimm Feb 28, 2024
078eca3
chore: 리액션 기능을 위한 퍼블리싱 (#191)
Doeunnkimm Mar 3, 2024
69bb5bd
refactor: emojis → emojiGroup 리팩터링 (#198)
Doeunnkimm Mar 12, 2024
7e7dbe9
feat: 응원한 사람 중 탈퇴한 사용자인 경우 ui 수정 (#200)
newminkyung Mar 13, 2024
f4319ac
chore: 피드 페이지를 위한 기본 구조 퍼블리싱 (#190)
hjy0951 Mar 13, 2024
09cbd59
chore: 댓글 기능을 위한 퍼블리싱 (#199)
Doeunnkimm Mar 13, 2024
e49c791
feat: 바텀 네비게이션 컴포넌트 구현 (#202)
newminkyung Mar 14, 2024
4601a61
fix: 무한스크롤 한 번 스크롤 시 페이지 여러개 요청하는 버그 수정 (#203)
newminkyung Mar 14, 2024
5b503e1
feat: 피드 페이지 댓글 바텀 시트 연결 / 리액션 기능 퍼블리싱 (#208)
hjy0951 Mar 14, 2024
cfa3fbc
feat: 피드 페이지 무한 스크롤 적용 (#211)
hjy0951 Mar 14, 2024
6b98ee0
feat: 이모지 api 연동 (#204)
Doeunnkimm Mar 14, 2024
e552ad0
feat: 홈페이지 내 탭 메뉴 컴포넌트 구현 (#209)
newminkyung Mar 15, 2024
48d55a0
feat: 내 지도에서 프로필 이미지 -> 공유 버튼으로 변경 (#210)
newminkyung Mar 16, 2024
a3634d6
refactor: 필요한 모듈만 import 하도록 (#214)
Doeunnkimm Mar 16, 2024
3c66aaa
chore: 이모지 추가 로직 중 낙관적 업데이트 제거 (#215)
Doeunnkimm Mar 16, 2024
27f96f9
fix: 남의 지도일 때, 공유 버튼 -> 프로필 이미지로 변경 (#220)
newminkyung Mar 17, 2024
ee44ec1
chore: totalReactUserCount 값 추가 및 적용 (#222)
Doeunnkimm Mar 17, 2024
6c83d70
chore: 내 지도 스타일 변경 (#212)
newminkyung Mar 18, 2024
ceec0af
feat: 피드 페이지 / 마이 페이지에 바텀 네비게이션 추가 (#217)
newminkyung Mar 18, 2024
1a70d03
feat: 홈 화면 - 지도 탭 추가 (#219)
newminkyung Mar 19, 2024
cbb3086
feat: 타임라인 탭 ui 구현 (#225)
newminkyung Mar 20, 2024
85de508
chore: emoji-ReactionUserTotalCount 컴포넌트에 변경된 디자인 반영 (#229)
Doeunnkimm Mar 21, 2024
1e31ef9
feat: 피드 페이지 API 연결 (#224)
hjy0951 Mar 22, 2024
40551b2
chore: 바텀시트에 z-index 스타일 속성 추가 (#230)
Doeunnkimm Mar 23, 2024
f8885f2
feat: 타임라인 조회 api 반영 (#231)
newminkyung Mar 27, 2024
e815d04
feat: 댓글 기능 api 연동 및 ios에서 키패드 이슈 대응 (#223)
Doeunnkimm Mar 29, 2024
a3bdeef
refactor: 오류 페이지 컴포넌트 리팩터링 (#236)
Doeunnkimm Apr 2, 2024
98f0906
fix: 존재하지 않는 유저 지도 접근시 에러 처리 (#237)
Doeunnkimm Apr 2, 2024
faf4dd6
feat: 응원한 사람 조회 api 응답 값 수정 반영 / 응원하기 성공 시에도 에러 토스트가 뜨는 버그 수정 (#232)
newminkyung Apr 2, 2024
b0331fe
feat: 피드 이모지 추가/삭제시 낙관적 업데이트 적용 (#234)
hjy0951 Apr 2, 2024
1e4df2f
feat: 목표 수정 기능 개발 (#192)
deepbig Apr 2, 2024
d896560
fix: 타임라인 조회 쿼리키 수정 (#238)
newminkyung Apr 2, 2024
d4c5f59
fix: 피드 페이지에서 댓글 API 요청시 누락된 목표 ID 추가 (#239)
hjy0951 Apr 2, 2024
4b5a8e6
chore: 디자인 반영 (#240)
Doeunnkimm Apr 4, 2024
947b406
chore: Toast zIndex 크게 (#241)
Doeunnkimm Apr 4, 2024
3542088
fix: 댓글 리스트 조회 시 빨콩 바로 없어지도록 (#242)
Doeunnkimm Apr 4, 2024
49dda78
bug: 타임라인 댓글 작성 / 삭제 시, 댓글 개수가 반영되지 않는 이슈 수정 (#243)
newminkyung Apr 8, 2024
f9986e6
refactor: 생년월일 입력 - 변경된 디자인 적용 및 리팩터링 (#245)
Doeunnkimm Apr 8, 2024
21a13d0
bug: 정보수정 페이지에서 birth 없이 수정 가능하도록 (#252)
Doeunnkimm Apr 12, 2024
f5865da
feat: 내 지도 / 남 지도 타임라인 api 분리 (#251)
newminkyung Apr 13, 2024
0842833
chore: 파일 정리, 리팩터링, 로딩 상태 처리 (#254)
Doeunnkimm Apr 19, 2024
7b80e54
fix: 이미 존재하는 이모지를 + 버튼을 이용하여 새로 추가할 때 내가 반응한 이모지로 표기되지 않는 현상 수정 (#244)
hjy0951 Apr 19, 2024
5823b9b
fix: undefined 에러 잡기 (#257)
Doeunnkimm Apr 20, 2024
0c5ced0
fix: 응원하기 버튼 클릭 후, 모든 버튼이 눌리지 않는 버그 수정 (#256)
newminkyung Apr 20, 2024
eec973f
fix: 타임라인 이모지 추가 / 삭제 안되는 이슈 수정 (#255)
newminkyung Apr 20, 2024
0b89e83
feat: composeEventHandlers 추가 (#258)
Doeunnkimm Apr 20, 2024
f72cae1
bug: commentBottomSheet 마운트 시 input focus 제거 (#260)
Doeunnkimm Apr 20, 2024
642a586
chore: viewport 로직 제거 (#264)
Doeunnkimm Apr 20, 2024
bafb4df
feat: 페이지 전환 애니메이션 추가 / 로딩 개선 (#253)
newminkyung Apr 20, 2024
c17240a
fix: dateField 수정 시 validate이 안먹는 문제 해결 (#259)
deepbig Apr 20, 2024
a5f0242
fix: 남의 지도 프로필 누르면 내 프로필로 이동하는 버그 수정 (#262)
newminkyung Apr 20, 2024
7b26d1d
fix: goal detail 화면에 previous 경로와 popState 커스텀 동작 추가 (#263)
deepbig Apr 20, 2024
8cd54e1
login 페이지 이동 전에 현재 페이지 path를 저장하고 로그인 성공 시 redirect 수행 (#265)
deepbig Apr 20, 2024
e1a16f8
feat: 댓글 추가 시 스크롤 위치 조정 (#266)
Doeunnkimm Apr 20, 2024
988c852
fix: 타임라인에서 새로고침 시 지도 페이지로 이동하는 이슈 수정 (#261)
newminkyung Apr 20, 2024
5f4f98c
fix: cursor pointer 되도록 button으로 래핑 (#267)
Doeunnkimm Apr 24, 2024
a8ca805
fix: 남의 목표에서 삭제/수정 버튼이 생기는 이슈 해결 (+ 수정 기능 뒤로가기 경로 수정) (#268)
deepbig Apr 26, 2024
ff2979e
feat: 피드에서 이모지 클릭 시, 낙관적 업데이트 제거 (#269)
newminkyung Apr 26, 2024
99f9f88
chore: 홈탭 스토리 삭제
newminkyung Apr 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,12 @@
{
"endOfLine": "auto"
}
],
"jsx-a11y/label-has-associated-control": [
2,
{
"labelAttributes": ["htmlFor"]
}
]
}
}
4 changes: 2 additions & 2 deletions .github/workflows/chromatic.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ name: 'Chromatic Deployment'

on:
pull_request:
branches: [main]
branches: [main, dev]
paths:
- '**.stories.tsx'
push:
branches: [main]
branches: [main, dev]
paths:
- '**.stories.tsx'

Expand Down
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@
"source.fixAll.stylelint": "explicit",
"source.addMissingImports": "explicit"
},
"editor.formatOnSave": true
"editor.formatOnSave": true,
"cSpell.words": ["bandiboodi", "bandi", "boodi"]
}
2 changes: 1 addition & 1 deletion public/lotties/bandiboodi-loading.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions src/app/error/page.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ErrorPageLayout } from '@/features/customErrors/components';
import { DefaultErrorPage } from '@/features/customErrors/components';

const ErrorPage = () => {
return <ErrorPageLayout statusCode={500} />;
return <DefaultErrorPage statusCode={500} />;
};

export default ErrorPage;
11 changes: 11 additions & 0 deletions src/app/feed/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import type { PropsWithChildren } from 'react';

const FeedPageLayout = ({ children }: PropsWithChildren) => {
return (
<div className="w-full h-[100dvh] bg-white">
<div className="flex flex-col pt-5xs">{children}</div>
</div>
);
};

export default FeedPageLayout;
14 changes: 14 additions & 0 deletions src/app/feed/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { BottomNavigation } from '@/components/molecules/bottomNavigation';
import { FeedBody, FeedHeader } from '@/features/feed';

const FeedPage = () => {
return (
<>
<FeedHeader />
<FeedBody />
<BottomNavigation />
</>
);
};

export default FeedPage;
5 changes: 5 additions & 0 deletions src/app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,8 @@
@apply max-w-[var(--layout-max-w)] min-h-[var(--layout-min-h)] w-full mx-auto;
}
}

::-webkit-scrollbar {
/* 가로 스크롤바 보이지 않도록 */
display: none;
}
2 changes: 1 addition & 1 deletion src/app/goal/detail/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { PropsWithChildren } from 'react';

const layout = ({ children }: PropsWithChildren) => {
return <main className="relative h-screen">{children}</main>;
return <main className="relative h-[100dvh]">{children}</main>;
};

export default layout;
2 changes: 1 addition & 1 deletion src/app/goal/new/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import CreateGoalFormProvider from '@/features/goal/contexts/CreateGoalFormProvi
const Layout = ({ children }: PropsWithChildren) => {
return (
<CreateGoalFormProvider>
<div className="w-full h-screen bg-gradient1 relative">
<div className="w-full h-[100dvh] bg-gradient1 relative">
<SpeechBubble className="absolute top-[-4%] w-full" />
<Stars className="absolute top-[28%] left-1/4 w-1/2" />
<Image
Expand Down
29 changes: 29 additions & 0 deletions src/app/goal/update/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
'use client';

import { useEffect } from 'react';
import { useRouter } from 'next/navigation';

import GoalUpdateForm from '@/features/goal/components/update/GoalUpdateForm';
import { useGetGoal } from '@/hooks/reactQuery/goal';

interface ParamsProps {
params: {
id: string;
};
}

const UpdateGoalPage = ({ params }: ParamsProps) => {
const goalId = +params['id'];
const { data: goal } = useGetGoal({ goalId });
const router = useRouter();

useEffect(() => {
if (goal?.isMyGoal === false) {
router.push(`/goal/detail/${goalId}`);
}
}, [goal, goalId, router]);

return goal?.isMyGoal && <GoalUpdateForm goalId={goalId} goal={goal} />;
};

export default UpdateGoalPage;
9 changes: 9 additions & 0 deletions src/app/goal/update/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
'use client';

import type { PropsWithChildren } from 'react';

const UpdateGoalLayout = ({ children }: PropsWithChildren) => {
return <div className="w-full bg-[#F8FBFF]">{children}</div>;
};

export default UpdateGoalLayout;
25 changes: 22 additions & 3 deletions src/app/home/[username]/error.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,28 @@
'use client';

import { ErrorPageLayout } from '@/features/customErrors/components';
import Image from 'next/image';
import type { AxiosError } from 'axios';

const Error = ({ error }: { error: Error & { digest?: string } }) => {
return <ErrorPageLayout statusCode={403} />;
import NullUserErrorImage from '@/assets/images/error/close.png';
import { DefaultErrorPage } from '@/features/customErrors/components';
import { ErrorPageLayout } from '@/features/customErrors/components/errorPageLayout';
import { ResetButton } from '@/features/customErrors/components/errorPageLayout/ResetButton';

const ERROR_STATUS_CODE = {
public: 403,
nullUser: 404,
};

const Error = ({ error }: { error: AxiosError & { digest?: string } }) => {
if (error.status === ERROR_STATUS_CODE.public) return <DefaultErrorPage statusCode={403} />;
if (error.status === ERROR_STATUS_CODE.nullUser)
return (
<ErrorPageLayout
TopComponent={<Image src={NullUserErrorImage} width={146} height={189} alt="null_user_error" />}
title={`앗, 존재하지 않는 인생지도에요. \n 페이지 주소를 다시 확인해주세요.`}
footer={<ResetButton statusCode={403} />}
/>
);
};

export default Error;
4 changes: 2 additions & 2 deletions src/app/home/[username]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ export const generateMetadata = async ({ params: { username } }: HomeRouteParams

const HomeLayout = ({ children }: PropsWithChildren) => {
return (
<main className="relative flex justify-center bg-gradient1">
<main className="relative flex justify-center">
<div className="absolute right-0 w-full h-[125px] bg-gradientPurpleBlur" />
<div className="w-full h-[100dvh]">
<div className="w-full h-[100dvh] flex flex-col items-center justify-between pb-xs">{children}</div>
<div className="w-full h-[100dvh] flex flex-col items-center justify-between">{children}</div>
</div>
</main>
);
Expand Down
11 changes: 11 additions & 0 deletions src/app/loading.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Loading as LoadingComponent } from '@/components/molecules/loading';

export default function Loading() {
return (
<div className="flex items-center justify-center h-screen bg-gradient1">
<div className="w-[160px] h-[160px] rounded-[12px] shadow-thumb bg-white">
<LoadingComponent />
</div>
</div>
);
}
2 changes: 1 addition & 1 deletion src/app/my/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { PropsWithChildren } from 'react';

const MyLayout = ({ children }: PropsWithChildren) => {
return <div className="w-full h-[100dvh] bg-gradient1">{children}</div>;
return <div className="w-full h-[100dvh]">{children}</div>;
};

export default MyLayout;
8 changes: 7 additions & 1 deletion src/app/my/page.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import { BottomNavigation } from '@/components/molecules/bottomNavigation';
import { MyPageLayout } from '@/features/my/components';

const MyPage = () => {
return <MyPageLayout />;
return (
<>
<MyPageLayout />
<BottomNavigation />
</>
);
};

export default MyPage;
4 changes: 2 additions & 2 deletions src/app/not-found.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ErrorPageLayout } from '@/features/customErrors/components';
import { DefaultErrorPage } from '@/features/customErrors/components';

const NotFoundPage = () => {
return <ErrorPageLayout statusCode={404} />;
return <DefaultErrorPage statusCode={404} />;
};

export default NotFoundPage;
10 changes: 9 additions & 1 deletion src/app/oauth2/token/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use client';

import { useEffect } from 'react';
import type { Route } from 'next';
import { useRouter, useSearchParams } from 'next/navigation';

import { useAuth } from '@/hooks';
Expand All @@ -21,7 +22,14 @@ const OAuthTokenPage = () => {

useEffect(() => {
if (isLoggedIn && memberData) {
router.push(isLoggedIn ? `/home/${memberData.username}` : '/onboarding');
const prevPath = sessionStorage.getItem('savedPathBeforeLogin') as Route;
if (prevPath?.startsWith('/') && prevPath !== '/') {
router.push(prevPath);
sessionStorage.removeItem('savedPathBeforeLogin');
} else {
router.push(isLoggedIn ? `/home/${memberData.username}` : '/onboarding');
}

localStorage.setItem('username', memberData.username);
}
}, [memberData, router, isLoggedIn]);
Expand Down
22 changes: 22 additions & 0 deletions src/app/template.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
'use client';

import type { PropsWithChildren } from 'react';
import { m } from 'framer-motion';

const variants = {
enter: { opacity: 1, x: 0, y: 0 },
hidden: { opacity: 0, x: -200, y: 0 },
};

export default function Template({ children }: PropsWithChildren) {
return (
<m.main
variants={variants}
initial={{ opacity: 0 }}
animate={{ opacity: 1, scale: 1 }}
transition={{ type: 'spring' }}
>
{children}
</m.main>
);
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions src/assets/icons/blue-comment-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions src/assets/icons/comment-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions src/assets/icons/feed-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/assets/icons/forward-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions src/assets/icons/home-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions src/assets/icons/home/feed-tab-active-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions src/assets/icons/home/feed-tab-default-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions src/assets/icons/home/map-tab-active-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading