Skip to content

Commit 47e4ef2

Browse files
authored
Merge pull request #73 from ASAP-Lettering/fix/#72
[Fix] 1차 배포 전 QA
2 parents d3ca1d6 + 41bf829 commit 47e4ef2

23 files changed

Lines changed: 265 additions & 120 deletions

File tree

package-lock.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"react-use-measure": "^2.1.1",
2929
"react-window": "^1.8.10",
3030
"recoil": "^0.7.7",
31+
"recoil-persist": "^5.1.0",
3132
"slick-carousel": "^1.8.1",
3233
"styled-components": "^6.1.12"
3334
},

src/app/error/letter/page.tsx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
11
"use client";
22

3+
import { getMainId } from "@/api/planet/space/space";
34
import Button from "@/components/common/Button";
45
import Loader, { LoaderContainer } from "@/components/common/Loader";
5-
import NavigatorBar from "@/components/common/NavigatorBar";
66
import { useRouter, useSearchParams } from "next/navigation";
77
import { Suspense } from "react";
88
import styled from "styled-components";
99

1010
const ErrorLetterPage = () => {
1111
const router = useRouter();
12-
const goToHome = () => {
13-
router.push("/planet");
12+
const searchParams = useSearchParams();
13+
const url = searchParams.get("url");
14+
15+
const goToHome = async () => {
16+
try {
17+
await getMainId();
18+
router.push("/planet");
19+
} catch (error) {
20+
console.error("유효한 회원이 아닌 것으로 판단:", error);
21+
router.push(`/login?url=${url}`);
22+
}
1423
};
24+
1525
return (
1626
<Container>
1727
<MainWrapper>

src/app/letter/preview/page.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ export default function LetterPreviewPaging() {
153153
</Suspense>
154154
);
155155
}
156+
156157
const Layout = styled.div`
157158
width: 100%;
158159
height: 100%;

src/app/letter/register/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import { useRecoilState } from "recoil";
1212
import { registerLetterState } from "@/recoil/letterStore";
1313
import { useToast } from "@/hooks/useToast";
1414
import { postImage } from "@/api/image/image";
15-
import Loader, { LoaderContainer } from "@/components/common/Loader";
1615
import imageCompression from "browser-image-compression";
16+
import Loader, { LoaderContainer } from "@/components/common/Loader";
1717

1818
const LetterRegisterPage = () => {
1919
const router = useRouter();

src/app/letter/template/page.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use client";
22

3-
import React, { Suspense, useState } from "react";
3+
import React, { Suspense, useEffect, useState } from "react";
44
import styled, { css } from "styled-components";
55
import { theme } from "@/styles/theme";
66
import NavigatorBar from "@/components/common/NavigatorBar";
@@ -9,7 +9,10 @@ import { useRouter, useSearchParams } from "next/navigation";
99
import Image from "next/image";
1010
import Letter from "@/components/letter/Letter";
1111
import { useRecoilValue, useSetRecoilState } from "recoil";
12-
import { registerLetterState } from "@/recoil/letterStore";
12+
import {
13+
registerLetterState,
14+
useSsrComplectedState,
15+
} from "@/recoil/letterStore";
1316
import Loader, { LoaderContainer } from "@/components/common/Loader";
1417

1518
const LetterTemplatePage = () => {
@@ -24,6 +27,13 @@ const LetterTemplatePage = () => {
2427
const [template, setTemplateType] = useState<number>(templateType || 0);
2528
const totalPage = 10;
2629

30+
/* SSR 완료 시 상태 업데이트 */
31+
const setSsrCompleted = useSsrComplectedState();
32+
33+
useEffect(() => {
34+
setSsrCompleted();
35+
}, [setSsrCompleted]);
36+
2737
const hanleChangeTemplate = (id: number) => {
2838
setTemplateType(id);
2939
};
@@ -73,6 +83,7 @@ const LetterTemplatePage = () => {
7383
<TemplatesList>
7484
{[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((item) => (
7585
<TemplateImage
86+
key={item}
7687
src={`/assets/letter/background_${item}.png`}
7788
width={70}
7889
height={70}

src/app/mypage/delete/page.tsx

Lines changed: 81 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
"use client";
22

3-
import { deleteUser } from "@/api/mypage/user";
3+
import { deleteUser, logout } from "@/api/mypage/user";
44
import Button from "@/components/common/Button";
55
import Check from "@/components/common/Check";
66
import Dropdown from "@/components/common/Dropdown";
77
import Input from "@/components/common/Input";
88
import Loader, { LoaderContainer } from "@/components/common/Loader";
99
import NavigatorBar from "@/components/common/NavigatorBar";
10-
import { clearTokens, removeCookie } from "@/utils/storage";
10+
import { clearTokens, getRefreshToken, removeCookie } from "@/utils/storage";
1111
import { useRouter } from "next/navigation";
1212
import { Suspense, useEffect, useState } from "react";
1313
import styled from "styled-components";
@@ -57,6 +57,31 @@ const DeleteAccount = () => {
5757
});
5858
};
5959

60+
// 테스트 해본 코드
61+
// const handleDeleteUser = async () => {
62+
// try {
63+
// // 회원 탈퇴 요청
64+
// const res = await deleteUser();
65+
// console.log(res.data);
66+
67+
// // 로그아웃 요청을 위해 refreshToken 가져오기
68+
// const refreshToken = getRefreshToken();
69+
70+
// if (refreshToken) {
71+
// // 서버 로그아웃 요청
72+
// const logoutRes = await logout(refreshToken);
73+
// console.log(logoutRes.data);
74+
// }
75+
76+
// clearTokens();
77+
// removeCookie("letter-onboard");
78+
79+
// router.push("/login");
80+
// } catch (err) {
81+
// console.log(err);
82+
// }
83+
// };
84+
6085
return (
6186
<Container>
6287
<Wrapper>
@@ -127,76 +152,76 @@ export default function SendedLetterPaging() {
127152
}
128153

129154
const Container = styled.div`
130-
display: flex;
131-
flex-direction: column;
132-
height: 100%;
133-
min-height: 100%;
134-
max-height: 100%;
135-
justify-content: space-between;
136-
color: white;
137-
background:${(props) => props.theme.colors.bg};
155+
display: flex;
156+
flex-direction: column;
157+
height: 100%;
158+
min-height: 100%;
159+
max-height: 100%;
160+
justify-content: space-between;
161+
color: white;
162+
background: ${(props) => props.theme.colors.bg};
138163
`;
139164

140165
const MainWrapper = styled.div`
141-
display: flex;
142-
flex-direction: column;
143-
padding: 5px 24px;
144-
height: 100%;
145-
overflow-y: auto;
146-
box-sizing: border-box;
147-
&::-webkit-scrollbar {
148-
width: 5px; /* Width of the scrollbar */
149-
}
150-
151-
&::-webkit-scrollbar-track {
152-
background: ${(props: any) => props.theme.colors.gray800};
153-
border-radius: 10px; /* Rounded corners */
154-
}
155-
156-
&::-webkit-scrollbar-thumb {
157-
background: ${(props: any) => props.theme.colors.gray600};
158-
border-radius: 10px; /* Rounded corners */
159-
}
166+
display: flex;
167+
flex-direction: column;
168+
padding: 5px 24px;
169+
height: 100%;
170+
overflow-y: auto;
171+
box-sizing: border-box;
172+
&::-webkit-scrollbar {
173+
width: 5px; /* Width of the scrollbar */
174+
}
175+
176+
&::-webkit-scrollbar-track {
177+
background: ${(props: any) => props.theme.colors.gray800};
178+
border-radius: 10px; /* Rounded corners */
179+
}
180+
181+
&::-webkit-scrollbar-thumb {
182+
background: ${(props: any) => props.theme.colors.gray600};
183+
border-radius: 10px; /* Rounded corners */
184+
}
160185
`;
161186

162187
const Wrapper = styled.div`
163-
display: flex;
164-
width: 100%;
165-
padding: 24px;
188+
display: flex;
189+
width: 100%;
190+
padding: 24px;
166191
`;
167192

168193
const MainTitle = styled.div`
169-
${(props: any) => props.theme.fonts.title01};
170-
color: ${(props: any) => props.theme.colors.white};
171-
padding: 9px 0;
194+
${(props: any) => props.theme.fonts.title01};
195+
color: ${(props: any) => props.theme.colors.white};
196+
padding: 9px 0;
172197
`;
173198

174199
const SubTitle = styled.div`
175-
${(props: any) => props.theme.fonts.body08};
176-
color: ${(props: any) => props.theme.colors.white};
177-
margin-bottom: 35px;
200+
${(props: any) => props.theme.fonts.body08};
201+
color: ${(props: any) => props.theme.colors.white};
202+
margin-bottom: 35px;
178203
`;
179204

180205
const QuestionText = styled.div`
181-
${(props: any) => props.theme.fonts.subtitle};
182-
color: ${(props: any) => props.theme.colors.white};
183-
display : flex;
184-
justify-content: space-between;
185-
186-
//글자수
187-
span {
188-
display: flex;
189-
text-align: center;
190-
align-items: center;
191-
${(props: any) => props.theme.fonts.caption03};
192-
color: ${(props: any) => props.theme.colors.white};
193-
}
206+
${(props: any) => props.theme.fonts.subtitle};
207+
color: ${(props: any) => props.theme.colors.white};
208+
display: flex;
209+
justify-content: space-between;
210+
211+
//글자수
212+
span {
213+
display: flex;
214+
text-align: center;
215+
align-items: center;
216+
${(props: any) => props.theme.fonts.caption03};
217+
color: ${(props: any) => props.theme.colors.white};
218+
}
194219
`;
195220

196221
const QuestionWrapper = styled.div`
197-
display: flex;
198-
width: 100%;
199-
flex-direction: column;
200-
gap: 12px;
201-
padding: 20px 0;
222+
display: flex;
223+
width: 100%;
224+
flex-direction: column;
225+
gap: 12px;
226+
padding: 20px 0;
202227
`;

src/app/planet/move/page.tsx

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,21 @@ const PlanetMovePage = () => {
5353
};
5454

5555
const handleMovePlanet = async () => {
56-
/* 편지 다른 행성으로 이동하기 */
56+
/* 편지 다른 행성 또는 궤도로 이동하기 */
5757
if (letterId) {
58-
if (checkedPlanet) {
59-
try {
58+
try {
59+
// 우선, 편지 궤도(독립 편지)로 보내기
60+
await putLetterToIndep(letterId);
61+
console.log("편지 궤도 보내기 성공");
62+
63+
// checkedPlanet가 있을 경우, 다른 행성으로 이동
64+
if (checkedPlanet) {
6065
await putLetterToPlanet({
6166
letterId: letterId,
6267
spaceId: checkedPlanet,
6368
});
6469
console.log("편지 다른 행성 이동 성공");
65-
router.push("/planet");
6670

67-
// 토스트 메세지
6871
showToast(
6972
`${name} 님의 편지가 ${checkePlanetName} 행성으로 이동했어요`,
7073
{
@@ -74,17 +77,7 @@ const PlanetMovePage = () => {
7477
bottom: "230px",
7578
}
7679
);
77-
} catch {
78-
console.log("편지 다른 행성 이동 실패");
79-
}
80-
} else {
81-
/* 편지 궤도(독립 편지)로 보내기 */
82-
try {
83-
await putLetterToIndep(letterId);
84-
console.log("편지 궤도 보내기 성공");
85-
router.push("/planet");
86-
87-
// 토스트 메세지
80+
} else {
8881
showToast(
8982
`${name} 님의 편지가 ${checkePlanetName} 궤도로 이동했어요`,
9083
{
@@ -94,9 +87,11 @@ const PlanetMovePage = () => {
9487
bottom: "230px",
9588
}
9689
);
97-
} catch {
98-
console.log("편지 궤도 보내기 실패");
9990
}
91+
92+
router.push("/planet");
93+
} catch (error) {
94+
console.log("편지 이동 실패", error);
10095
}
10196
}
10297
};
@@ -251,6 +246,7 @@ const Small = styled.div`
251246
text-align: center;
252247
color: ${theme.colors.gray500};
253248
${(props) => props.theme.fonts.caption03}
249+
white-space: nowrap;
254250
`;
255251

256252
const ButtonWrapper = styled.div`

src/app/send/complete/page.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ const SendCompletePage = () => {
1313
const router = useRouter();
1414

1515
const { receiverName } = useRecoilValue(sendLetterState);
16-
const resetLetterState = useResetRecoilState(sendLetterState);
1716

1817
return (
1918
<Layout>
@@ -39,7 +38,6 @@ const SendCompletePage = () => {
3938
text="홈으로 돌아가기"
4039
onClick={() => {
4140
router.push("/planet");
42-
resetLetterState();
4341
}}
4442
/>
4543
</ButtonWrapper>

0 commit comments

Comments
 (0)