Skip to content
Merged

Alpha #548

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
17dcb9a
Feat: top filter 개발
mayrang Apr 17, 2025
664390f
Feat: 여행 로그 화면단 구현
mayrang Apr 17, 2025
1c4099c
Fix: 나라 추가
mayrang Apr 18, 2025
b48db7f
Fix: route 버그 수정
mayrang Apr 18, 2025
ed5e06e
Fix: 알파 병합
mayrang Apr 18, 2025
c31e029
Fix: alpha 동기화
mayrang Apr 19, 2025
46bf2b7
Fix: 에러 수정
mayrang Apr 19, 2025
c985934
Fix: api 연결 완료
mayrang Apr 19, 2025
f9361d8
Fix: build에러 수정
mayrang Apr 19, 2025
df02459
Merge branch 'alpha' into TMO-75-다녀온-국가-페이지
mayrang Apr 19, 2025
6c434b5
feat: 상대방 프로필 컴포넌트 구현
somm12 Apr 20, 2025
c4123ff
style: 필요없는 코드 제거 및 글자 수정
somm12 Apr 20, 2025
8fa8fbd
feat: 상대방 프로필 모달 Layout에 추가
somm12 Apr 20, 2025
e2f2ea8
design: 여행 BoxLayout 상대방 프로필 재사용할 수 있도록 수정
somm12 Apr 20, 2025
6455e59
feat: 상대방 프로필 API 연결 작업 - hooks, api, model 정의
somm12 Apr 20, 2025
ac698ff
design: 태그 마진, 굵기 수정
somm12 Apr 20, 2025
2fbfb27
feat: 아이콘 추가
somm12 Apr 20, 2025
9f652a4
feat: 상대방 프로필 뱃지 화면 구현
somm12 Apr 20, 2025
c058241
feat: 마이페이지 변경 사항 반영
somm12 Apr 20, 2025
1c55618
feat: 상대방 프로필 클릭시 화면이 보여지도록 라우트 추가
somm12 Apr 20, 2025
1bfd5c1
feat: 상대방 프로필 조회 store 정의
somm12 Apr 20, 2025
da667a4
feat: 경고 아이콘 추가
somm12 Apr 20, 2025
bd7f4bb
feat: 여행 거리 출력 형식 utils 추가
somm12 Apr 20, 2025
0b2f6b9
fix: 신고하기 이전 페이지 userProfile도 case에 추가
somm12 Apr 20, 2025
6d85582
Feat: countryName: 한국 -> 대한민국
mayrang Apr 20, 2025
ae6f29b
Merge branch 'TMO-75-다녀온-국가-페이지' of github.com:SWYP6-Team7/frontend i…
mayrang Apr 20, 2025
18cd2f3
fix: ageGroup 상대방 프로필 api 필드 추가 반영 => 프론트에도 수정
somm12 Apr 20, 2025
92a7e21
Merge branch 'alpha' into feat/#76
somm12 Apr 20, 2025
1921a04
fix: 빌드 오류 수정 완료
somm12 Apr 20, 2025
03ed60f
merge: alpha와 머지하면서 생긴 커밋입니다.
somm12 Apr 20, 2025
2e5e3f1
fix: 모듈 에러 수정
somm12 Apr 20, 2025
e049bb3
fix: deploy 에러 수정
somm12 Apr 20, 2025
6e6f913
Fix: pr 코멘트 반영
mayrang Apr 20, 2025
0cd7c3c
Merge pull request #511 from SWYP6-Team7/TMO-75-다녀온-국가-페이지
somm12 Apr 20, 2025
b6c1099
Merge pull request #512 from SWYP6-Team7/feat/#76
mayrang Apr 20, 2025
6619c38
fix: 마이페이지 게스트 유저 화면 수정
somm12 Apr 20, 2025
54c5e21
fix: 빌드오류 반영
somm12 Apr 20, 2025
c527036
Merge pull request #513 from SWYP6-Team7/feat/#76
somm12 Apr 20, 2025
c8fc60b
fix: 마이페이지 렌더링 null 반환 문제 수정
somm12 Apr 21, 2025
d3756a5
Merge pull request #514 from SWYP6-Team7/feat/#76
somm12 Apr 21, 2025
ad545f3
fix: 여행 뱃지 개수 임시 데이터 넣은 부분 => 수정
somm12 Apr 21, 2025
a469723
docs: 오타 수정
somm12 Apr 21, 2025
6ec0542
Merge pull request #515 from SWYP6-Team7/feat/#76
somm12 Apr 21, 2025
c63a742
design: > 아이콘 수정
somm12 Apr 21, 2025
868e0ba
Merge pull request #516 from SWYP6-Team7/feat/#76
somm12 Apr 21, 2025
9bff6d8
design: 마이페이지 아이콘 세로축 정렬
somm12 Apr 21, 2025
a5cfd34
Merge pull request #517 from SWYP6-Team7/feat/#76
somm12 Apr 21, 2025
3f0a78b
fix: moveToUserProfilePage use client 추가(최종)
mayrang Apr 21, 2025
0c954ac
Merge pull request #518 from SWYP6-Team7/feat/#76
mayrang Apr 21, 2025
43668d7
Fix: moveToUserProfilePage store 함수 안으로 넣기
mayrang Apr 21, 2025
e176c1b
Merge pull request #519 from SWYP6-Team7/feat/#76
mayrang Apr 21, 2025
48e9b47
Fix: moveToUserProfilePage 컴포넌트에서 호출하도록 변경
mayrang Apr 21, 2025
64e75be
Merge pull request #520 from SWYP6-Team7/feat/#76
mayrang Apr 21, 2025
bea92ea
Fix: api 호출 에러 수정
mayrang Apr 21, 2025
7caf692
Merge pull request #521 from SWYP6-Team7/TMO-75-다녀온-국가-페이지
mayrang Apr 21, 2025
07a306c
Fix: 오타 수정
mayrang Apr 21, 2025
0f990f1
Merge pull request #522 from SWYP6-Team7/TMO-75-다녀온-국가-페이지
mayrang Apr 21, 2025
4f897ce
fix: 사용자 프로필 탭 화면수정
somm12 Apr 21, 2025
93701a1
Merge branch 'alpha' of https://github.com/SWYP6-Team7/frontend into …
somm12 Apr 21, 2025
0a8b902
Merge pull request #523 from SWYP6-Team7/feat/#76
somm12 Apr 21, 2025
555a8d6
fix: 상대방 프로필 조회 화면 height 수정
somm12 Apr 21, 2025
9d02281
Merge pull request #524 from SWYP6-Team7/feat/#76
somm12 Apr 21, 2025
877ee16
fix: 뒤로가기시, 상대방프로필 화면 모달 닫기
somm12 Apr 21, 2025
6413fca
fix: 다시 원래 코드로 되돌림. 디자인 문제
somm12 Apr 21, 2025
f705b10
design: 상세화면 댓글 조회 버튼 z-index 수정
somm12 Apr 21, 2025
33e7c3d
fix: 커뮤니티에서 글쓴이 프로필 선택시 프로필 화면 이동하도록 수정
somm12 Apr 21, 2025
72951cc
Merge pull request #525 from SWYP6-Team7/feat/#76
somm12 Apr 21, 2025
65e4ad9
Fix: countryName 나라만 가져오도록 수정
mayrang Apr 21, 2025
5040bd4
Merge branch 'alpha' of github.com:SWYP6-Team7/frontend into TMO-75-다…
mayrang Apr 21, 2025
917938c
Fix: 잘못 수정한 부분 수정
mayrang Apr 21, 2025
ab72c7b
Merge pull request #526 from SWYP6-Team7/TMO-75-다녀온-국가-페이지
mayrang Apr 21, 2025
ca2c592
fix: 아래에서 위로 상대방 프로필 모달 애니메이션 수정, 여행 상세 댓글 버튼 z-index 수정
somm12 Apr 21, 2025
4b1e209
Merge pull request #527 from SWYP6-Team7/feat/#76
somm12 Apr 21, 2025
ca1a8a9
design: 모바일 화면에서 화면 좁아지는 부분 width줘서 해결
somm12 Apr 21, 2025
8720209
Merge pull request #528 from SWYP6-Team7/feat/#76
somm12 Apr 21, 2025
212a3eb
feat: 여행 뱃지 화면 또는 여행 로그 화면에서 뒤로가기하면 다시 프로필 모달화면으로 돌아오도록 추가
somm12 Apr 21, 2025
7f208be
Merge pull request #529 from SWYP6-Team7/feat/#76
somm12 Apr 21, 2025
4f017cd
fix: 여행 뱃기 또는 로그 화면에서 뒤로가기 , 프로필 모달 켜짐 무한 굴레 문제
somm12 Apr 21, 2025
5a9f20c
Fix: VisitContainer에서 다녀온 여행 날짜 다 안보이는 부분 수정
mayrang Apr 21, 2025
999d311
Merge pull request #530 from SWYP6-Team7/feat/#76
somm12 Apr 21, 2025
1d22de8
Merge branch 'alpha' of github.com:SWYP6-Team7/frontend into TMO-75-다…
mayrang Apr 21, 2025
cb5902f
Merge pull request #531 from SWYP6-Team7/TMO-75-다녀온-국가-페이지
mayrang Apr 21, 2025
f91ad04
fix: 여행 뱃지, 로그 화면 에서 뒤로가기시, 모달 보이도록 수정 setTimeout텀 추가. 한번에 바로 뒤로가는 문제 수정
somm12 Apr 21, 2025
0be5a08
Merge pull request #532 from SWYP6-Team7/feat/#76
somm12 Apr 21, 2025
3fe35d4
fix: API URL 변경
somm12 Apr 23, 2025
10adbd7
Merge pull request #533 from SWYP6-Team7/feat/#76
somm12 Apr 23, 2025
2406ead
fix: react#310문제 수정
somm12 Apr 23, 2025
027c8ef
Merge pull request #534 from SWYP6-Team7/feat/#76
somm12 Apr 23, 2025
5891ccc
fix & design: 상대방 프로필 모달 height 동적 조절 수정
somm12 Apr 24, 2025
da4f126
Merge pull request #535 from SWYP6-Team7/feat/#76
somm12 Apr 24, 2025
1571fb8
fix: 상대방 프로필 조회 화면 탭메뉴 수정
somm12 Apr 24, 2025
979fa62
conflict: 해결
somm12 Apr 24, 2025
095ca0d
docs: 오타 수정
somm12 Apr 24, 2025
62ea97d
Merge pull request #536 from SWYP6-Team7/feat/#76
somm12 Apr 24, 2025
f4610dc
Fix: 날짜가 안나오는 문제 수정
mayrang Apr 25, 2025
775954f
Fix: alpha 머지
mayrang Apr 25, 2025
e37a73d
Merge pull request #537 from SWYP6-Team7/TMO-75-다녀온-국가-페이지
mayrang Apr 25, 2025
0c6fb06
다녀온 여행 국내 부분 타입 안정화
mayrang Apr 25, 2025
b381fdb
Merge pull request #538 from SWYP6-Team7/TMO-75-다녀온-국가-페이지
mayrang Apr 25, 2025
0b23f51
fix: 상대방 프로필 조회 데이터가 없을 때 화면이 나오지 않는 문제 수정중
somm12 Apr 26, 2025
f49d764
Merge pull request #539 from SWYP6-Team7/feat/#76
somm12 Apr 26, 2025
67f424b
fix: 상대방 프로필 조회 - 참가한 여행 또는 만든 여행 count 0일 때, 대체 화면 가려지는 문제 수정"
somm12 Apr 26, 2025
bfb2d08
Merge pull request #540 from SWYP6-Team7/feat/#76
somm12 Apr 26, 2025
4784e65
fix&design: 상대방 프로필 조회, 참가한 여행 신청한 여행 데이터 0개 일 때 화면 수정
somm12 Apr 26, 2025
7c784a4
Merge pull request #541 from SWYP6-Team7/feat/#76
somm12 Apr 26, 2025
9d0f5e1
fix: 상대방 프로필 가로축 스크롤이 생기는 부분 수정
somm12 Apr 27, 2025
badf621
Merge pull request #542 from SWYP6-Team7/feat/#76
somm12 Apr 27, 2025
62df080
fix&Design : 모바일 화면에서 스크롤 중간쯤 튕기를 문제 수정
somm12 Apr 27, 2025
9035322
Merge pull request #543 from SWYP6-Team7/feat/#76
somm12 Apr 27, 2025
d2c9230
fix: 상대방 프로필 뱃지, 여행 로그 화면에서 뒤로가기시, 상대방 프로필 오버레이가 켜지는 문제 수정
somm12 May 25, 2025
894ffbc
Merge pull request #544 from SWYP6-Team7/fix/#76
somm12 May 25, 2025
b941529
fix: 마이페이지 접속시, 상대방 프로필(유저 프로필) id를 userId와 동일하게 할당
somm12 May 25, 2025
33e5669
Merge pull request #545 from SWYP6-Team7/fix/#76
somm12 May 25, 2025
87c376d
Fix: 전체적으로 클리커블한 cursor pointer 추가, 총 여행거리 올림으로 변경
mayrang May 28, 2025
2602df8
Fix: travellogmap 최적화 및 방문 국가 뒤로가기 로직 수정
mayrang May 28, 2025
0c54757
Merge pull request #546 from SWYP6-Team7/fix/#78
mayrang May 28, 2025
2c10eb0
Fix: 몇몇 cursor pointer 추가, 뒤로가기 로직 수정
mayrang May 28, 2025
cef47fa
Merge pull request #547 from SWYP6-Team7/fix/#78
mayrang May 28, 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
37,789 changes: 37,788 additions & 1 deletion public/geojson/korea.json

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions src/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,10 @@ axiosInstance.interceptors.response.use(
console.log("new AccessToken", newAccessToken, refreshResponse);



// 갱신된 토큰으로 원래 요청 재시도


return axiosInstance({
...originalRequest,
headers: getJWTHeader(newAccessToken),
Expand Down
63 changes: 46 additions & 17 deletions src/api/tripDetail.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,52 +4,81 @@ import { ITripDetail } from "@/model/tripDetail";
import RequestError from "@/context/ReqeustError";
import { UpdateTripReqData } from "@/model/trip";

export async function getTripDetail(travelNumber: number, accessToken: string | null) {
export async function getTripDetail(
travelNumber: number,
accessToken: string | null
) {
try {
const response = await axiosInstance.get(`/api/travel/detail/${travelNumber}`, {
...(accessToken && { headers: getJWTHeader(accessToken) }),
});
const response = await axiosInstance.get(
`/api/travel/detail/${travelNumber}`,
{
...(accessToken && { headers: getJWTHeader(accessToken) }),
}
);
return handleApiResponse(response);
} catch (err: any) {
throw new RequestError(err);
}
}

// 현재 신청한 사람 수 조회
export async function getTripEnrollmentCount(travelNumber: number, accessToken: string | null) {
export async function getTripEnrollmentCount(
travelNumber: number,
accessToken: string | null
) {
try {
const response = await axiosInstance.get(`/api/travel/${travelNumber}/enrollmentCount`, {
...(accessToken && { headers: getJWTHeader(accessToken) }),
});
const response = await axiosInstance.get(
`/api/travel/${travelNumber}/enrollmentCount`,
{
...(accessToken && { headers: getJWTHeader(accessToken) }),
}
);
return handleApiResponse(response);
} catch (err: any) {
throw new RequestError(err);
}
}
// 모집한 인원 목록 조회
export async function getCompanions(travelNumber: number, accessToken: string | null) {
export async function getCompanions(
travelNumber: number,
accessToken: string | null
) {
try {
const response = await axiosInstance.get(`/api/travel/${travelNumber}/companions`, {
...(accessToken && { headers: getJWTHeader(accessToken) }),
});
const response = await axiosInstance.get(
`/api/travel/${travelNumber}/companions`,
{
...(accessToken && { headers: getJWTHeader(accessToken) }),
}
);
return handleApiResponse(response);
} catch (err: any) {
throw new RequestError(err);
}
}
export async function updateTripDetail(travelNumber: number, data: UpdateTripReqData, accessToken: string | null) {
export async function updateTripDetail(
travelNumber: number,
data: UpdateTripReqData,
accessToken: string | null
) {
try {
if (!accessToken) throw new Error("로그인을 해주세요.");
const response = await axiosInstance.put(`/api/travel/${travelNumber}`, data, {
headers: getJWTHeader(accessToken),
});
const response = await axiosInstance.put(
`/api/travel/${travelNumber}`,
data,
{
headers: getJWTHeader(accessToken),
}
);
return handleApiResponse(response);
} catch (err: any) {
throw new RequestError(err);
}
}

export async function deleteTripDetail(travelNumber: number, accessToken: string | null) {
export async function deleteTripDetail(
travelNumber: number,
accessToken: string | null
) {
try {
if (!accessToken) throw new Error("로그인을 해주세요.");
const response = await axiosInstance.delete(`/api/travel/${travelNumber}`, {
Expand Down
26 changes: 25 additions & 1 deletion src/api/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import { getJWTHeader } from "@/utils/user";
import axios from "axios";
import { axiosInstance, handleApiResponse } from ".";
import RequestError from "@/context/ReqeustError";
import { TravelLog } from "@/model/profile";

//
export async function getUser(userId: number, accessToken: string) {
Expand Down Expand Up @@ -71,7 +73,11 @@ export async function checkEmail(email: string) {
}
}

export const getToken = async (domain: "naver" | "kakao" | "google", code: string, state: string) => {
export const getToken = async (
domain: "naver" | "kakao" | "google",
code: string,
state: string
) => {
try {
const url =
domain === "kakao"
Expand All @@ -95,3 +101,21 @@ export const getToken = async (domain: "naver" | "kakao" | "google", code: strin
console.error("토큰 요청 실패:", error);
}
};

export async function getUserTravelLog(
userNumber: number,
accessToken: string | null
) {
try {
const response = await axiosInstance.get(
`/api/users/${userNumber}/visited-countries`,

{
...(accessToken && { headers: getJWTHeader(accessToken) }),
}
);
return handleApiResponse(response) as TravelLog;
} catch (err: any) {
throw new RequestError(err);
}
}
47 changes: 47 additions & 0 deletions src/api/userProfile.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { getJWTHeader } from "@/utils/user";
import { axiosInstance, handleApiResponse } from ".";
import RequestError from "@/context/ReqeustError";
import { IUserProfileInfo } from "@/model/userProfile";

export const getUserProfile = async (accessToken: string, userNumber: number): Promise<IUserProfileInfo | null> => {
try {
const response = await axiosInstance.get(`/api/users/${userNumber}/profile`, {
headers: getJWTHeader(accessToken),
});

return handleApiResponse(response);
} catch (err: any) {
throw new RequestError(err);
}
};
// 상대방의 만든 여행 조회
export const getUserCreatedTravels = async (pageParam: number, accessToken: string, userNumber: number) => {
try {
const response = await axiosInstance.get(`/api/users/${userNumber}/created-travels`, {
headers: getJWTHeader(accessToken),
params: {
page: pageParam,
size: 10,
},
});
return handleApiResponse(response);
} catch (err: any) {
throw new RequestError(err);
}
};
// 상대방의 참가 여행 조회.

export const getUserAppliedTravels = async (pageParam: number, accessToken: string, userNumber: number) => {
try {
const response = await axiosInstance.get(`/api/users/${userNumber}/applied-travels`, {
headers: getJWTHeader(accessToken),
params: {
page: pageParam,
size: 10,
},
});
return handleApiResponse(response);
} catch (err: any) {
throw new RequestError(err);
}
};
69 changes: 69 additions & 0 deletions src/app/api/users/[userNumber]/visited-countries/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import { NextResponse } from "next/server";

export async function GET(request: Request, { params }: { params: Promise<{ userNumber: string }> }) {
const { userNumber } = await params;

return NextResponse.json({
resultType: "SUCCESS",
success: {
userNumber: 3,
visitedCountriesCount: 8,
internationalLogs: {
ASIA: [
{
countryName: "일본",
visitDates: ["2025-02-22", "2025-03-22", "2025-04-09"],
},
{
countryName: "태국",
visitDates: ["2025-03-22"],
},
{
countryName: "베트남",
visitDates: ["2024-12-15"],
},
],
NORTH_AMERICA: [
{
countryName: "캐나다",
visitDates: ["2025-03-22"],
},
{
countryName: "미국",
visitDates: ["2025-03-22"],
},
],
EUROPE: [
{
countryName: "프랑스",
visitDates: ["2025-03-22"],
},
{
countryName: "영국",
visitDates: ["2025-03-22"],
},
],
OCEANIA: [
{
countryName: "호주",
visitDates: ["2024-10-10"],
},
],
},
domesticLogs: [
{
locationName: "부산",
visitDates: ["2025-04-09"],
},
{
locationName: "경주",
visitDates: ["2025-04-09"],
},
{
locationName: "서울",
visitDates: ["2025-03-15", "2025-04-01"],
},
],
},
});
}
1 change: 1 addition & 0 deletions src/app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ body {
line-height: 1;
font-family: "Pretendard", sans-serif;
letter-spacing: -0.4px !important;
overflow-x: hidden;
}
ol,
ul {
Expand Down
4 changes: 4 additions & 0 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import Layout from "@/components/Layout";
import Providers from "./providers";
import "./globals.css";
import { MSWComponent } from "@/context/MSWComponent";
import UserProfileOverlay from "@/components/userProfile/UserProfileOverlay";

import { GoogleAnalytics } from "@next/third-parties/google";
export default function RootLayout({
children,
Expand All @@ -13,7 +15,9 @@ export default function RootLayout({
<body>
<Providers>
<MSWComponent />
<UserProfileOverlay />
<GoogleAnalytics gaId={process.env.GOOGLE_ANALYTICS || ""} />

<Layout>{children}</Layout>
<div id="checking-modal" />
<div id="trip-toast" />
Expand Down
16 changes: 0 additions & 16 deletions src/app/test/page.tsx

This file was deleted.

5 changes: 5 additions & 0 deletions src/app/userProfile/[userNumber]/log/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import TravelLog from "@/page/TravelLog/TravelLog";

export default function TravelLogPage() {
return <TravelLog />;
}
8 changes: 8 additions & 0 deletions src/app/userProfileBadge/[userId]/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { UserProfileBadge } from "@/page/UserProfileBadge/UserProfileBadge";
import React from "react";

const UserProfileBadgePage = () => {
return <UserProfileBadge />;
};

export default UserProfileBadgePage;
Loading