Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
318 commits
Select commit Hold shift + click to select a range
57e718b
feat: GoalInfo 컴포넌트 제작 완료
Hys-Lee Jun 13, 2025
99ac5b6
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 13, 2025
e459ea9
Merge branch 'main' into shared-components
Hys-Lee Jun 13, 2025
46a633e
feat: Calendar 화살표 기능 수정
Hys-Lee Jun 13, 2025
1589563
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 13, 2025
6a2f808
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 13, 2025
3378eba
Merge branch 'main' into shared-components
Hys-Lee Jun 13, 2025
88cdf21
feat: TodoItem 제출 시의 표정 정리 제외 완성
Hys-Lee Jun 14, 2025
886683a
feat: 커스텀 체크박스 완성
Hys-Lee Jun 14, 2025
6d1f920
feat: GoalMenu 수정 및 완성
Hys-Lee Jun 14, 2025
f1962b4
feat: GoalMenu 스토리북 설명 추가
Hys-Lee Jun 14, 2025
25b16f7
feat: TodoItem 비동기 고려 수정
Hys-Lee Jun 14, 2025
5ecb6a1
feat: ToolTip 완성
Hys-Lee Jun 14, 2025
81ce28d
feat: Tooltip 스토리북 사이드바 경로 변경
Hys-Lee Jun 14, 2025
b303a5a
feat: Moti svg 크기 변하도록 수정
Hys-Lee Jun 14, 2025
02a378e
feat: Banner 컴포넌트 완성
Hys-Lee Jun 14, 2025
f5d3ce0
feat: Banner 스토리북 사이드바 경로 수정
Hys-Lee Jun 14, 2025
4bd07bb
feat: svg 크기 변경 가능하도록 수정 및 기존 TodoItem에서 크기 적용
Hys-Lee Jun 14, 2025
081e628
feat: FloatingButton 컴포넌트 완성
Hys-Lee Jun 14, 2025
ad55d80
feat: FloatingButton 스토리 사이드바 경로 수정
Hys-Lee Jun 14, 2025
25a404b
Trigger CI/CD for redeploy
Hys-Lee Jun 15, 2025
23bc5da
Trigger CI/CD for storybook redeploy
Hys-Lee Jun 15, 2025
b1b54d8
Merge branch 'main' into shared-components
Hys-Lee Jun 15, 2025
af4bcf6
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 15, 2025
7c97603
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 15, 2025
dbd560f
Merge branch 'main' into shared-components
Hys-Lee Jun 15, 2025
a5dbc27
feat: Toggle 컴포넌트 완성
Hys-Lee Jun 15, 2025
35ed3e7
feat: Checkbox 컴포넌트 호버링 케이스 추가
Hys-Lee Jun 15, 2025
d494c02
feat: 스토리북 배포 ci 관련 캐싱 삭제 및 cleanup 동작 추가
Hys-Lee Jun 15, 2025
70f4784
Merge branch 'main' into shared-components
Hys-Lee Jun 15, 2025
429d95a
feat: ProgressBar 완성
Hys-Lee Jun 15, 2025
16086b3
feat: ProgressBar 스토리 사이드바 경로 변경
Hys-Lee Jun 15, 2025
f8a02ca
feat: TextField 컴포넌트 완성
Hys-Lee Jun 16, 2025
fa8fa26
feat: TextField 스토리북 불필요 부분 삭제
Hys-Lee Jun 16, 2025
a9ba7b5
fix: shared components 빌드 에러 수정
Hys-Lee Jun 16, 2025
bf28c96
feat: PR 관련 안정성 수정
Hys-Lee Jun 16, 2025
29b3084
feat: 공통 컴포넌트들 중 일부 RCC로 수정 및 lint관련 빌드 에러 수정
Hys-Lee Jun 17, 2025
bcf29c9
feat: TodoItem 라벨 클릭 이벤트 수정
Hys-Lee Jun 18, 2025
6618578
feat: TodoItem 스토리 '오늘날짜' 고정 값으로 변경
Hys-Lee Jun 18, 2025
7048996
feat: TodoItem 스토리 날짜 고정
Hys-Lee Jun 18, 2025
d313a9c
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 18, 2025
6650769
feat: TodoList 모달 및 fetch제외 완성
Hys-Lee Jun 18, 2025
dc5d6c6
feat: 메인 페이지 제작중
Hys-Lee Jun 20, 2025
180e722
feat: 메인 페이지 제작에 필요한 컴포넌트 추가 제작
Hys-Lee Jun 20, 2025
049b50d
feat: 일부 공유 컴포넌트 반응형으로 수정
Hys-Lee Jun 20, 2025
5d0dc3d
feat: 메인페이지 추가 컴포넌트 AppBar 제작
Hys-Lee Jun 20, 2025
2daeacb
Merge branch 'main-components' into main-page
Hys-Lee Jun 20, 2025
97d306a
Merge branch 'main' into shared-components
Hys-Lee Jun 20, 2025
dea5eb8
Merge branch 'shared-components' into main-page
Hys-Lee Jun 20, 2025
66c0a63
feat: msw 적용하기
Hys-Lee Jun 20, 2025
e76c667
feat: 메인 페이지 제작 관련 컴포넌트 수정
Hys-Lee Jun 20, 2025
4b103f6
feat: 배너 컴포넌트 반응형으로 수정
Hys-Lee Jun 20, 2025
287da9f
feat: 모달 컴포넌트 및 관련 훅과 스토어 생성 (진행중)
Hys-Lee Jun 23, 2025
efb0a6a
Merge branch 'shared-components' into main-page
Hys-Lee Jun 23, 2025
059e897
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 25, 2025
189c38e
feat: TodoList 접힌 상황 추가 및 api에 대한 추상화 타입 적용. 비동기 미처리.
Hys-Lee Jun 25, 2025
15c7ec4
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 26, 2025
2e7f446
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 26, 2025
c95b9dc
Merge branch 'main' into main-components
Hys-Lee Jun 26, 2025
02b81e2
feat: AppBar삭제 및 패키지 재설치
Hys-Lee Jun 26, 2025
ba2a556
Merge branch 'main-components' into main-page
Hys-Lee Jun 26, 2025
b2f3216
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 26, 2025
8c8e2b4
Merge branch 'main' into main-page
Hys-Lee Jun 26, 2025
c9811d9
feat: 불필요 컴포넌트 제거(ModalAddingSubGoal겹침)
Hys-Lee Jun 26, 2025
3f31add
feat: 모달 버튼 공용 컴포넌트의 것으로 수정
Hys-Lee Jun 26, 2025
19d8442
feat: 메인 페이지 TodoList 모달 연결
Hys-Lee Jun 27, 2025
f503a80
feat: todoList관련 데이터 페칭 연결 임시
Hys-Lee Jun 28, 2025
a751fab
feat: 모달 버튼 변경사항 수정
Hys-Lee Jun 28, 2025
5f81d91
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 28, 2025
bc30259
Merge branch 'main' into group-components
Hys-Lee Jun 28, 2025
bf6cae5
merge from main branch
Hys-Lee Jun 28, 2025
e7a6582
feat: ReactionModal 컴포넌트 완성
Hys-Lee Jun 28, 2025
3fb2152
feat: Reaction Svg들 디자인 변경 반영 수정
Hys-Lee Jun 28, 2025
a8aecba
feat: 모달 공통 디자인 수정
Hys-Lee Jun 28, 2025
22dfe01
feat: ReactModal 컴포넌트 수정
Hys-Lee Jun 28, 2025
9862186
Merge branch 'main' into main-page
Hys-Lee Jun 28, 2025
c4a0e97
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 28, 2025
b7c9b3a
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 28, 2025
5b4cb54
feat: svgr 넥스트 설정 수정
Hys-Lee Jun 28, 2025
074ebf4
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jun 28, 2025
69c1f61
Merge branch 'main' into main-page
Hys-Lee Jun 28, 2025
ec0dd77
feat: api generation 스크립트 수정 및 재생성
Hys-Lee Jun 28, 2025
8d051fe
feat: 날짜 타입 문자열로 변환하는 유틸 함수 제작
Hys-Lee Jun 28, 2025
b7306d9
feat: todo와 subGoal관련 fetching 함수 제작
Hys-Lee Jun 28, 2025
7cc886b
feat: api generator fetch기반으로 변경 후 재생성
Hys-Lee Jun 28, 2025
8d3b7e6
feat: todo, todolist관련 swr 훅 제작
Hys-Lee Jun 28, 2025
73a085e
feat: TodoItem 체크에 대한 낙관적 업데이트위한 훅 제작
Hys-Lee Jun 28, 2025
29e8b84
feat: TodoList 비동기 onEdit제외 연결
Hys-Lee Jun 28, 2025
31910cb
feat: TodoList subGoal추가 관련 비동기 수정
Hys-Lee Jun 28, 2025
8d72f6e
feat: 스토리북 generation 예외 추가
Hys-Lee Jun 28, 2025
b8ae611
feat: shared 모노레포 구조에서 react 관련 버전 프로젝트 루트와 일치
Hys-Lee Jun 28, 2025
2a66352
feat: check svg 수정 관련 연관 컴포넌트 TodoItem 수정
Hys-Lee Jun 28, 2025
fd7c5fb
feat: TodoBottomSheet 완성
Hys-Lee Jun 28, 2025
3dba3c4
Merge branch 'bottom-sheet' into main-page
Hys-Lee Jun 28, 2025
f9c031c
feat: 데이터 페칭 이후 타입 변환의 책임을 비동기 훅으로 변경
Hys-Lee Jun 28, 2025
ed391d9
feat: goal 관련 fetching함수 제작
Hys-Lee Jun 28, 2025
103d7a2
feat: TodoBottomSheet 동작 수정
Hys-Lee Jul 2, 2025
d3ea1bb
feat: todo, goal, subGoal에 대한 fethcing과 쿼리 훅 생성
Hys-Lee Jul 2, 2025
16bb26e
feat: TodoBottomSheet활성화, 선택된 goal관련 zustand store생성
Hys-Lee Jul 2, 2025
a1903c0
feat: msw모킹 위한 api 및 db 생성
Hys-Lee Jul 2, 2025
f5a68db
feat: 메인 페이지 goal관련 데이터 갖는 GoalCard 컴포넌트 생성 (진행중)
Hys-Lee Jul 2, 2025
4342d9c
feat: 메인 페이지에 필요한 컴포넌트 생성 및 수정 MainHeader, GoalMenuContainer (임시)
Hys-Lee Jul 2, 2025
6def3ab
feat: 메인 페이지 연결을 위한 자잘한 수정
Hys-Lee Jul 2, 2025
1fef49f
feat: TodoList 메인페이지 api연결을 위한 수정
Hys-Lee Jul 2, 2025
8e51ade
fix: 바텀 시트 todo추가 동작 수정, 바텀시트 선택된 subgoal 버튼에 보이도록 수정
Hys-Lee Jul 2, 2025
e82590f
fix: TodoBottomSheet 상태 초기화 수정
Hys-Lee Jul 2, 2025
94357ad
feat: GoalCard 모달이 존재하면 바텀시트 닫도록 수정.
Hys-Lee Jul 3, 2025
7e7d048
feat: useModal 수정
Hys-Lee Jul 3, 2025
7372118
feat: TodoList에서 ModalAddingSubGoal 동작 관련 연결
Hys-Lee Jul 3, 2025
b198db6
fix: 자잘한 UI 에러 수정
Hys-Lee Jul 3, 2025
d6d1be1
feat: 페칭 및 훅 자잘한 수정
Hys-Lee Jul 3, 2025
1907456
feat: useTodoList undefined도 가능하도록 수정.
Hys-Lee Jul 3, 2025
e8d99d3
feat: cheer, point 관련 fetching 제작
Hys-Lee Jul 3, 2025
a748eae
feat: 모킹 구조 변경 및 points, cheer 핸들러 추가
Hys-Lee Jul 3, 2025
e8a0e2f
feat: 불필요 부분 삭제
Hys-Lee Jul 3, 2025
6f7f16d
Merge branch 'main' into group-page
Hys-Lee Jul 3, 2025
52afac5
style: 린트 처리
Hys-Lee Jul 3, 2025
f326324
feat: api 재생성
Hys-Lee Jul 3, 2025
ca13251
feat: AppBar back타입 ui 수정
Hys-Lee Jul 3, 2025
f4b31c0
feat: GroupRoomHeader 그룹 룸 페이지 컴포넌트 추가
Hys-Lee Jul 3, 2025
bed944e
feat: GroupChatRoom 제작중
Hys-Lee Jul 3, 2025
62abd44
feat: fetch 동작에서 헤더 설정 수정
Hys-Lee Jul 4, 2025
b905023
Merge branch 'main-page' into group-page
Hys-Lee Jul 4, 2025
291696c
feat: 목표 추가 버튼 제작
Hys-Lee Jul 4, 2025
21e9566
feat: GoalCard와 useGoalWithSubGoalTodo대해 타입 및 props명 변경에 따른 수정
Hys-Lee Jul 4, 2025
5861887
feat: BottomTabBar Link추가로 페이지 이동할 수 있도록 함.
Hys-Lee Jul 4, 2025
9a2825a
feat: main페이지에 BottomTabBar추가에 따른 UI수정
Hys-Lee Jul 4, 2025
24c7cb3
feat: main page에서 bottom tab bar관련 불필요 패딩 제거.
Hys-Lee Jul 4, 2025
6889e7a
feat: 로컬 개발 시 msw사용하도록 수정
Hys-Lee Jul 4, 2025
4f0aeb6
feat: 시연 전 ui 수정사항 반영
Hys-Lee Jul 4, 2025
d44cb32
feat: 스토리북 빌드 에러 수정
Hys-Lee Jul 5, 2025
bc22043
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jul 5, 2025
d41a521
Merge branch 'main' into main-page
Hys-Lee Jul 7, 2025
f030985
feat: shared 모노 레포 관련 유틸 함수 처리
Hys-Lee Jul 7, 2025
b02d996
feat: 페이지 이동 관련 수정
Hys-Lee Jul 7, 2025
eb32626
fix: PR 전 정리
Hys-Lee Jul 7, 2025
3b74f0c
feat: AppBar 상단 고정 및 관련해 z-index 수정
Hys-Lee Jul 7, 2025
cac3880
feat: svg stroke에서 currentColor적용에 의한 TodoList 클래스명 수정
Hys-Lee Jul 8, 2025
85e57cc
feat: detail page 수정중
Hys-Lee Jul 8, 2025
fbf94d9
feat: netlify 배포 세팅
Hys-Lee Jul 8, 2025
52f02bf
feat: netlify 배포 세팅 초기화
Hys-Lee Jul 8, 2025
e36a3a8
feat: 배포 404 에러 관련 수정
Hys-Lee Jul 8, 2025
0622490
feat: 메인페이지 bottom tab bar추가 및 bottom sheet와 함께 모바일 넓이에 맞게 조정
Hys-Lee Jul 8, 2025
9316685
feat: 상세-편집 페이지GoalEdit 위치 변경 및 바텀시트와 모달 추가
Hys-Lee Jul 8, 2025
c2c8e39
feat: 상세-편집 페이지 subGoalEdit 영역 추가
Hys-Lee Jul 8, 2025
b4fd95a
fix: TodoBottomSheet 버그 수정
Hys-Lee Jul 9, 2025
4aaf135
fix: fetching 반환값 반환하도록 해서 이후 동작 연결되도록 수정
Hys-Lee Jul 9, 2025
df2ed11
feat: dev서버 배포 전 프록시 및 msw수정
Hys-Lee Jul 9, 2025
d2a4fc0
feat: api gen 최신화
Hys-Lee Jul 9, 2025
987b98d
feat: fetching 함수들 디렉토리 위치 변경에 따른 수정
Hys-Lee Jul 9, 2025
90c1c7b
feat: 상세-편집 페이지 context를 사용한 상태관리와 api연결
Hys-Lee Jul 9, 2025
010a449
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jul 9, 2025
360db6d
Merge branch 'main' into detail-page
Hys-Lee Jul 9, 2025
8f9bfdd
feat: useGoalWithSubGoalTodo반환 타입 변화에 따른 GoalCard수정
Hys-Lee Jul 9, 2025
4fe2b16
feat: shared의 AppBar수정
Hys-Lee Jul 9, 2025
21f79fe
feat: 메인 페이지에서 detail 페이지로 이동 기능 추가
Hys-Lee Jul 9, 2025
9970d70
feat: api 재생성 및 Edit_Pencil svg의 stroke 수정
Hys-Lee Jul 9, 2025
120018e
feat: ModalUpdatingSubGoal 생성
Hys-Lee Jul 9, 2025
28d0169
feat: Edit페이지를 EditBody와 EditHeader 생성해 분리
Hys-Lee Jul 9, 2025
6935cb5
feat: 세부페이지-편집 EditBody와 EditHeader로 분리함으로 인한 수정
Hys-Lee Jul 9, 2025
ac32729
feat: 모달 동작 및 세부목표 추가 동작 관련 수정
Hys-Lee Jul 9, 2025
9e06327
fix: 동작 관련 자잘한 수정
Hys-Lee Jul 9, 2025
9c58a5d
feat: GoalDurationBottomSheet absolute로 중앙정렬 렌더링ㄹ 되도록 수정
Hys-Lee Jul 9, 2025
c89f939
feat: 상세페이지 라우팅 적용
Hys-Lee Jul 9, 2025
f463a23
Merge branch 'main' into main-page
Hys-Lee Jul 9, 2025
02680f9
Merge branch 'main' into dev
Hys-Lee Jul 9, 2025
9898d45
feat: 빌드 에러 관련 컴포넌트 이름 수정
Hys-Lee Jul 10, 2025
76b3926
feat: 로그인 리다이렉션 주소 환경변수화
Hys-Lee Jul 10, 2025
8debad7
Merge branch 'main-page' into dev
Hys-Lee Jul 10, 2025
dbd9f2d
feat: 메인페이지 수정사항 추가 - GoalMenuContainer
Hys-Lee Jul 10, 2025
148ea28
Main page - 로그인 리다이렉션 주소 환경변수화 (#36) (#37)
Hys-Lee Jul 10, 2025
67dccc7
feat: fetching관련 불필요 제거, 타입 정리, 반환값 처리, 이름 변경.
Hys-Lee Jul 10, 2025
e674a14
feat: ModalIncompletingSubGoal 생성
Hys-Lee Jul 10, 2025
77968ef
feat: ListCard 동작 및 fetching 결과 제출 제외 연결
Hys-Lee Jul 10, 2025
c592395
feat: GoalData 그룹 있을 때 처리 수정
Hys-Lee Jul 10, 2025
185d53b
feat: 목표 상세 컨텐츠 담는 DetailBody생성
Hys-Lee Jul 10, 2025
995daee
feat: api gen
Hys-Lee Jul 11, 2025
aa416be
feat: 목표 상세 ui구조 변경 및 목표 달성 모달 처리
Hys-Lee Jul 11, 2025
4e81a2b
feat: useGoalWithSubGoalTodo 반환 타입 변경으로 인한 수정
Hys-Lee Jul 11, 2025
0dcafc0
feat: GoalData 데이터 주입 완료. UI제외 완성
Hys-Lee Jul 12, 2025
43a42fb
feat: TodoResultBottomSheet 동작 완성
Hys-Lee Jul 12, 2025
8b5fcfc
feat: ListCard에 BottomSheet동작 연결
Hys-Lee Jul 12, 2025
420073b
feat: d-day계산 추출 및 적용
Hys-Lee Jul 12, 2025
306df88
feat: 목표 상세 api 훅 생성
Hys-Lee Jul 12, 2025
260ef22
feat: GoalData 목표 완료 이모지 추가 및 기타 수정
Hys-Lee Jul 12, 2025
d52641c
feat: svg관련 icon으로 사용하지 않도록 next config수정 및 detail페이지에서 DetailBody사용
Hys-Lee Jul 12, 2025
7bd4a0b
feat: GoalDurationBottomSheet 오버레이 ui 수정
Hys-Lee Jul 12, 2025
61c92dd
feat: 한 컴포넌트에서 BottomSheet여러개 사용되는 경우 대비 수정.
Hys-Lee Jul 12, 2025
155f96d
feat: TodoResultBottomSheet 바텀 탭 바 존재할 때 케이스 처리
Hys-Lee Jul 12, 2025
b9f33b5
feat: 메인 TodoList에서 투구 결과물 제출 관련 바텀시트와 연결
Hys-Lee Jul 12, 2025
64067ff
feat: 상세 페이지에서 바텀 탭바 관련 처리
Hys-Lee Jul 12, 2025
590fbed
feat: 목표 추가 페이지 제작
Hys-Lee Jul 12, 2025
ca4b973
feat: 메인 페이지에서 목표 생성 페이지 연결 적용
Hys-Lee Jul 12, 2025
594a569
feat: formData를 post하는 경우 처리
Hys-Lee Jul 13, 2025
e0f2a08
feat: 목표 상세 페이지 디자인 적용
Hys-Lee Jul 13, 2025
19b7041
feat: 상세-편집 페이지 디자인 적용
Hys-Lee Jul 13, 2025
cd111b4
feat: 상세-목표 추가 페이지 디자인 적용
Hys-Lee Jul 13, 2025
7a93427
feat: 메인 페이지 골 메뉴 좌우 드래그 처리
Hys-Lee Jul 13, 2025
cef9952
feat: 세부목표 순서 변경 처리
Hys-Lee Jul 13, 2025
5d58403
feat: 투구 result emotion처리 수정
Hys-Lee Jul 14, 2025
e6cf10c
feat: todoItem에서의 처리 관련 mutate 및 세부 페이지로 이동 처리
Hys-Lee Jul 14, 2025
a5e0ba9
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jul 14, 2025
c2e408f
Merge branch 'main' into detail-page
Hys-Lee Jul 14, 2025
85c12da
feat: api 훅 수정으로 인한 적용부 수정
Hys-Lee Jul 14, 2025
7405126
feat: api gen과 마이너 수정
Hys-Lee Jul 14, 2025
5652d34
Merge branch 'main' into group-page
Hys-Lee Jul 14, 2025
cdca0f7
feat: 그룹 페이지 및 GroupChatRoom 제작(임시)
Hys-Lee Jul 15, 2025
8840568
Merge branch 'detail-page' into group-page
Hys-Lee Jul 15, 2025
5d19841
feat: GroupChatItem 수정중
Hys-Lee Jul 16, 2025
cee8a96
feat: subgoal에 대한 todo fetch api의 pagination 기반으로의 변경으로 인한 수정
Hys-Lee Jul 16, 2025
4cda1fc
feat: 세부 목표 완료 처리
Hys-Lee Jul 17, 2025
a59dca7
feat: 메인페이지 무한스크롤 적용 및 기존 무한스크롤 쿼리 훅 offset처리 수정
Hys-Lee Jul 17, 2025
cf5b4ed
feat: api gen 및 쓰지 않는 api관련 빌드 에러 수정
Hys-Lee Jul 17, 2025
fc505a9
Merge branch 'dev' of https://github.com/prography/10th-Motimo-FE int…
Hys-Lee Jul 18, 2025
e6ee660
Merge branch 'detail-page' into dev
Hys-Lee Jul 18, 2025
a5f2e06
feat: package lock 수정(npm 재설치)
Hys-Lee Jul 18, 2025
c4ff677
feat: .env 파일 삭제
Hys-Lee Jul 18, 2025
acfd7f3
feat: 배포용 프록시 설정 추가
Hys-Lee Jul 18, 2025
31b2a6b
feat: 배포 환경 api 프록시 수정
Hys-Lee Jul 18, 2025
52f14ab
feat: 상세페이지 목표 제거 api 연결
Hys-Lee Jul 21, 2025
d9c2cf0
feat: GoalDurationBottomSheet 디자인 적용
Hys-Lee Jul 21, 2025
94a1c51
feat: 상세 페이지 관련 컴포넌트 pr전 스토리북 생성
Hys-Lee Jul 21, 2025
fc9da38
Merge branch 'dev' into detail-page
Hys-Lee Jul 21, 2025
2d909a3
Merge branch 'detail-page' into group-page
Hys-Lee Jul 21, 2025
4eb7a34
feat: 상세 페이지 컴포넌트 스토리 경로 수정
Hys-Lee Jul 21, 2025
92f847b
feat: 목표 완료 시 완료 이미지 뜨도록 수정
Hys-Lee Jul 21, 2025
7d33d33
fix: 배너 y overflow 처리 추가
Hys-Lee Jul 21, 2025
0f0a747
feat: 상세 페이지 바텀 시트 추가
Hys-Lee Jul 22, 2025
23e76c9
feat: 아이콘 색상 커스텀 관련 변경에 따른 관련 영역 수정
Hys-Lee Jul 22, 2025
a91796d
feat: 그룹 챗 관련 무한쿼리 사용 및 수정
Hys-Lee Jul 22, 2025
383a26b
Merge branch 'detail-page' into group-page
Hys-Lee Jul 22, 2025
f5698c2
fix: DetailBody에서 목표 완료 이후 목표 완료시키는 버튼 보이지 않도록 수정
Hys-Lee Jul 22, 2025
2fd6827
fix: DetailBody 목표 완료 이후에 목표완료모달 역시 뜨지 않도록 수정
Hys-Lee Jul 22, 2025
23d4f8b
Merge branch 'detail-page' into group-page
Hys-Lee Jul 22, 2025
6ab13fd
fix: GroupChatItem 스타일 수정에 따른 빌드 에러 수정
Hys-Lee Jul 22, 2025
be8d56d
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jul 23, 2025
b201408
Merge branch 'main' into group-page
Hys-Lee Jul 23, 2025
767709f
feat: GroupChatRoom 리액션 추가 및 구조 변경
Hys-Lee Jul 23, 2025
4b3ae63
Merge branch 'main' of https://github.com/prography/10th-Motimo-FE
Hys-Lee Jul 24, 2025
6567d6b
Merge branch 'main' into group-page
Hys-Lee Jul 24, 2025
50d5f34
feat: GroupChat수정해 머지 추가
Hys-Lee Jul 24, 2025
b5d44bb
feat: 작업하던 채팅방 페이지로 변경 및 헤더에 라우팅 추가
Hys-Lee Jul 24, 2025
5f4ce0a
feat: 새로운 메시지 fetch시 강제 하단으로 스크롤 이동 처리
Hys-Lee Jul 24, 2025
eb94d83
feat: GroupRoomHeader 스토리에서 라우팅 안하도록 외부에서 콜백으로 주입하는 방법으로 변경
Hys-Lee Jul 24, 2025
439a0d7
fix: 타입 관련 빌드 에러 수정
Hys-Lee Jul 24, 2025
b245131
feat: GroupChatRoom에서 파일 이름 및 url처리
Hys-Lee Jul 24, 2025
a7245d8
feat: 에러 페이지 추가
Hys-Lee Jul 25, 2025
b4ef713
feat: GroupChatItem에서 url값이 invalid할 때 처리 추가
Hys-Lee Jul 25, 2025
a8f1170
feat: GroupRoomHeader 뒤로가기 버튼에서 그룹 페이지로 이동하도록 수정
Hys-Lee Jul 25, 2025
5f2c1c8
feat: 상세 페이지에서의 DetailBody 뒤로가기 버튼 처리 수정
Hys-Lee Jul 25, 2025
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
32 changes: 31 additions & 1 deletion api/generated/motimo/Api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,10 @@ export interface TodoResultRs {
content?: string;
/** 투두 기록 파일 url */
fileUrl?: string;
/** 투두 기록 파일 이름 */
fileName?: string;
/** 투두 기록 파일 데이터 종류 */
fileMimeType?: string;
}

export interface TodoRs {
Expand Down Expand Up @@ -421,6 +425,12 @@ export interface GroupMemberRs {
isActivePoke?: boolean;
}

export type GoalTitleUpdatedContent = GroupMessageContent & {
/** @format uuid */
goalId?: string;
goalTitle?: string;
};

/** 그룹 메시지 응답 */
export interface GroupChatRs {
/** 메시지 목록 */
Expand Down Expand Up @@ -493,6 +503,12 @@ export interface GroupMessageItemRs {
sendAt: string;
}

export type MessageReactionContent = GroupMessageContent & {
/** @format uuid */
referenceMessageId?: string;
reactionType?: MessageReactionContentReactionTypeEnum;
};

export type TodoCompletedContent = GroupMessageContent & {
/** @format uuid */
todoId?: string;
Expand All @@ -508,6 +524,8 @@ export type TodoResultSubmittedContent = GroupMessageContent & {
emotion?: TodoResultSubmittedContentEmotionEnum;
content?: string;
fileUrl?: string;
fileName?: string;
mimeType?: string;
};

export interface JoinedGroupRs {
Expand Down Expand Up @@ -811,6 +829,8 @@ export enum GroupMessageContentTypeEnum {
LEAVE = "LEAVE",
TODO_COMPLETE = "TODO_COMPLETE",
TODO_RESULT_SUBMIT = "TODO_RESULT_SUBMIT",
GOAL_TITLE_UPDATE = "GOAL_TITLE_UPDATE",
MESSAGE_REACTION = "MESSAGE_REACTION",
}

/**
Expand All @@ -823,8 +843,10 @@ export enum GroupMessageContentTypeEnum {
interface BaseGroupMessageContentRs {
/** 메시지 내용 */
content:
| GoalTitleUpdatedContent
| GroupJoinContent
| GroupLeaveContent
| MessageReactionContent
| TodoCompletedContent
| TodoResultSubmittedContent;
}
Expand All @@ -833,6 +855,14 @@ type BaseGroupMessageContentRsTypeMapping<Key, Type> = {
type: Key;
} & Type;

export enum MessageReactionContentReactionTypeEnum {
GOOD = "GOOD",
COOL = "COOL",
CHEER_UP = "CHEER_UP",
BEST = "BEST",
LIKE = "LIKE",
}

export enum TodoResultSubmittedContentEmotionEnum {
PROUD = "PROUD",
REGRETFUL = "REGRETFUL",
Expand Down Expand Up @@ -1950,7 +1980,7 @@ export class Api<SecurityDataType extends unknown> {
* @summary 그룹 나가기 API
* @request DELETE:/v1/groups/{groupId}/members/me
* @secure
* @response `200` `void` OK
* @response `204` `void` No Content
*/
exitGroup: (groupId: string, params: RequestParams = {}) =>
this.http.request<void, any>({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ const DetailBody = ({ goalId }: DetailBodyProps) => {
type="button"
className="w-6 h-6 relative overflow-hidden text-label-assistive"
>
<Link href={`/group/${groupId}`}>
<Link href={`/group/${groupId}?from=details`}>
<RightArrowSvg />
</Link>
</button>
Expand Down
71 changes: 71 additions & 0 deletions app/error.tsx

Large diffs are not rendered by default.

122 changes: 27 additions & 95 deletions app/group/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,102 +1,34 @@
"use client";

import { use } from "react";
import { AppBar } from "@/components/shared/AppBar/AppBar";
import { GroupChat, SystemMessage } from "@/components/group";
import { UsersGroupIcon } from "@/components/icons";
import { useSafeRouter } from "@/hooks/useSafeRouter";
import {
useGroupChat,
useGroupDetail,
useJoinedGroups,
useMyProfile,
} from "@/api/hooks";
import { GetGroupChatParamsDirectionEnum } from "@/api/generated/motimo/Api";
interface GroupDetailPageProps {
params: Promise<{
id: string;
}>;
}

export default function GroupDetailPage({ params }: GroupDetailPageProps) {
const { id } = use(params);
const { data: { name: title } = {}, error } = useGroupDetail(id);

const { data: groupChat } = useGroupChat(
id,
"0",
"0",
GetGroupChatParamsDirectionEnum.AFTER,
);
const router = useSafeRouter();

const handleBackClick = () => {
router.push("/group");
};

const handleReactionClick = (messageId: string) => {
console.log("Reaction clicked for message:", messageId);
// TODO: Implement reaction functionality
};

const handleMemberClick = () => {
router.push(`/group/${id}/member`);
};

const { data: { nickname } = {} } = useMyProfile();
useParams,
usePathname,
useRouter,
useSearchParams,
} from "next/navigation";
import GroupChatRoom from "@/components/group/groupRoom/GroupChatRoom/GroupChatRoom";
import GroupRoomHeader from "@/components/group/groupRoom/GroupRoomHeader/GroupRoomHeader";
import { useGroupDetail } from "@/api/hooks";

export default function GroupRoom() {
const { id: groupId } = useParams<{ id: string }>();
const { data } = useGroupDetail(groupId);
const router = useRouter();
const fromPath = useSearchParams().get("from");

return (
<div className="flex flex-col h-screen bg-white">
{/* Status Bar Placeholder - 무시 */}

{/* AppBar */}
<div className="flex items-center justify-between px-3 py-2 h-14 bg-white">
<button
onClick={handleBackClick}
className="flex items-center justify-center w-6 h-6"
aria-label="뒤로 가기"
>
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
<path
d="M15 18L9 12L15 6"
stroke="#33363D"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
</button>

<h1 className="flex-1 ml-5 font-SUIT_Variable font-bold text-xl leading-[1.2] tracking-[-0.01em] text-black truncate">
{title}
</h1>

<button
onClick={handleMemberClick}
className="flex items-center justify-center w-10 h-10 rounded-full"
aria-label="그룹 멤버 보기"
>
<UsersGroupIcon width={24} height={24} color="#464C53" />
</button>
</div>

{/* Main Content */}
<div className="flex-1 overflow-y-auto">
{/* System Message */}
<div className="px-4 py-4">
<SystemMessage message={`${nickname}님이 그룹에 입장했습니다.`} />
</div>

{/* Chat Messages */}
<div className="px-4 pb-4">
<GroupChat
messages={groupChat?.messages ?? []}
onReactionClick={handleReactionClick}
/>
</div>
</div>

{/* Bottom Gesture Bar Placeholder - 무시 */}
</div>
<main className="flex flex-col gap-4 bg-background-alternative min-h-screen pb-4 relative">
<GroupRoomHeader
groupRoomName={data?.name ?? ""}
onBackClick={() => {
if (fromPath && fromPath === "details") {
router.back();
}
router.push("/group");
}}
routeToMember={() => router.push(`/group/${groupId}/member`)}
/>
<GroupChatRoom groupId={groupId} />
</main>
);
}
8 changes: 6 additions & 2 deletions components/group/GroupChat.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
GroupMessageItemRs,
TodoResultSubmittedContent,
} from "@/api/generated/motimo/Api";
import { useMyProfile } from "@/api/hooks";

interface GroupChatProps {
messages: GroupMessageItemRs[];
Expand All @@ -16,18 +17,21 @@ export const GroupChat = ({
className,
onReactionClick,
}: GroupChatProps) => {
const { data } = useMyProfile();

return (
<div className={cn("flex flex-col gap-4 w-full", className)}>
{messages.map((m) => (
<GroupChatItem
key={m.messageId}
id={m.messageId}
userId={m.userId}
// userId={m.userId}
type={m.userId === data?.id ? "me" : "member"}
style={"todo"}
hasUserReacted={m.hasUserReacted}
reactionCount={m.reactionCount}
userName={m.userName}
mainText={m.message as TodoResultSubmittedContent}
mainText={(m.message as TodoResultSubmittedContent).content ?? ""}
checkboxLabel={"checkboxLabel"}
isChecked={true}
diaryText={"다이어리 텍스트"}
Expand Down
68 changes: 46 additions & 22 deletions components/group/GroupChatItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,18 @@ import {
} from "@/api/generated/motimo/Api";

interface GroupChatItemProps {
style: "todo" | "photo" | "diary" | "reaction";
type: "me" | "member";
style: "todo" | "reaction";
hasUserReacted?: boolean;
reactionCount?: number;
userName: string;
userId: string;
mainText: TodoResultSubmittedContent;
// userId: string;
mainText: string;
checkboxLabel?: string;
isChecked?: boolean;
diaryText?: string;
// fileUrl?: string;
fileName?: string;
photoUrl?: string;
reactionType?: ReactionTypes;
className?: string;
Expand Down Expand Up @@ -104,14 +107,17 @@ export const GroupChatItem = ({
isChecked = true,
diaryText,
photoUrl,
fileName,
reactionType = "best",
className,
onReactionClick,
id,
userId: senderId,
type,
// userId: senderId,
}: GroupChatItemProps) => {
const { data: myProfile } = useMyProfile();
const isMe = myProfile?.id === senderId;
// const isMe = myProfile?.id === senderId;
const isMe = type === "me";

return (
<div
Expand Down Expand Up @@ -165,9 +171,10 @@ export const GroupChatItem = ({
<div
className={cn(
"bg-[#F7F7F8] rounded-lg",
style === "todo" && "py-3 px-4",
style === "photo" && "p-3 w-[248px]",
style === "diary" && "p-3 w-[248px]",
style === "todo" &&
`py-3 px-4 ${diaryText || photoUrl ? "w-[248px]" : ""}`,
// style === "photo" && "p-3 w-[248px]",
// style === "diary" && "p-3 w-[248px]",
style === "reaction" && "py-3 px-4 w-[248px]",
)}
>
Expand All @@ -177,36 +184,53 @@ export const GroupChatItem = ({
<div className="flex flex-col gap-1">
{/* Main text */}
<span className="font-SUIT_Variable font-bold text-sm leading-[1.4] tracking-[-0.01em] text-[#33363D]">
{mainText.content}
{mainText}
</span>

{/* Checkbox for todo, photo, and diary styles */}
{(style === "todo" || style === "photo" || style === "diary") &&
checkboxLabel && (
<ChatCheckbox checked={isChecked} label={checkboxLabel} />
)}
{/* {(style === "todo" || style === "photo" || style === "diary") && */}
{style === "todo" && checkboxLabel && (
<ChatCheckbox checked={isChecked} label={checkboxLabel} />
)}
</div>

{/* Photo for photo style */}
{style === "photo" && photoUrl && (
{/* {style === "photo" && photoUrl && ( */}
{style === "todo" && photoUrl && (
<div className="w-[116px] h-[116px] rounded-lg border border-[#CDD1D5] overflow-hidden">
<Image
src={photoUrl}
alt="첨부 이미지"
width={116}
height={116}
className="w-full h-full object-cover"
/>
{photoUrl.startsWith("http") ? (
<Image
src={photoUrl}
alt="첨부 이미지"
width={116}
height={116}
className="w-full h-full object-cover"
/>
) : (
<p className="font-['SUIT_Variable']"> Invalid URL path</p>
)}
</div>
)}

{/* Diary text for diary style */}
{style === "diary" && diaryText && (
{/* {style === "diary" && diaryText && ( */}
{style === "todo" && diaryText && (
<p className="font-SUIT_Variable font-medium text-sm leading-[1.4] tracking-[-0.01em] text-[#464C53]">
{diaryText}
</p>
)}

{style === "todo" && fileName && (
<div
className="pl-4 pr-3 py-2 relative bg-background-assistive rounded-lg inline-flex flex-col justify-center items-start gap-2 overflow
-hidden"
Comment on lines +225 to +226
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix line break in className attribute

The className string is split across lines in an unusual way that could cause formatting issues.

-                className="pl-4 pr-3 py-2 relative bg-background-assistive rounded-lg inline-flex flex-col justify-center items-start gap-2 overflow
-            -hidden"
+                className="pl-4 pr-3 py-2 relative bg-background-assistive rounded-lg inline-flex flex-col justify-center items-start gap-2 overflow-hidden"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
className="pl-4 pr-3 py-2 relative bg-background-assistive rounded-lg inline-flex flex-col justify-center items-start gap-2 overflow
-hidden"
className="pl-4 pr-3 py-2 relative bg-background-assistive rounded-lg inline-flex flex-col justify-center items-start gap-2 overflow-hidden"
🤖 Prompt for AI Agents
In components/group/GroupChatItem.tsx around lines 213 to 214, the className
attribute string is broken across lines in a way that may cause formatting
problems. Fix this by combining the entire className string into a single
continuous line without line breaks, ensuring proper spacing between class
names.

>
<p className="justify-start text-label-normal text-sm font-bold font-['SUIT_Variable'] leading-tight">
{fileName}
</p>
</div>
)}

{/* Reaction illustration for reaction style */}
{style === "reaction" && (
<ReactionIllustration type={reactionType} />
Expand Down
6 changes: 5 additions & 1 deletion components/group/ReactionModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,11 @@ const ReactionModal = ({ onLeaveReaction, onClose }: ReactionModalProps) => {
<p className="justify-start text-label-strong text-base font-bold font-['SUIT_Variable'] leading-tight">
리액션
</p>
<button className="w-6 h-6 relative overflow-hidden">
<button
onClick={() => onClose()}
type="button"
className="w-6 h-6 relative overflow-hidden"
>
<CloseSvg />
</button>
</div>
Expand Down
Loading