Skip to content

Commit 33825e4

Browse files
authored
Merge pull request #173 from ASAP-Lettering/feat/#172
[Feat] 비회원 편지 작성 발신인 이름 작성 추가
2 parents 0f1e6d3 + 398579e commit 33825e4

File tree

10 files changed

+250
-14
lines changed

10 files changed

+250
-14
lines changed

src/api/send/send.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,20 @@ export const postSendLetter = async ({
2525

2626
// 비회원 편지 쓰기
2727
export const postAnonymousSendLetter = async ({
28+
senderName,
2829
receiverName,
2930
content,
3031
images,
3132
templateType
3233
}: {
34+
senderName: string;
3335
receiverName: string;
3436
content: string;
3537
images: string[];
3638
templateType: number;
3739
}) => {
3840
return await client.post(`/api/v1/letters/anonymous/send`, {
41+
senderName,
3942
receiverName,
4043
content,
4144
images,

src/app/login/page.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export default function Login() {
2121
clearAnonymousSendLetterCode();
2222
setSendState({
2323
draftId: null,
24+
senderName: null,
2425
receiverName: '',
2526
content: '',
2627
images: [] as string[],

src/app/planet/page.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ const PlanetPage = () => {
7676
});
7777
setSendState({
7878
draftId: null,
79+
senderName: '',
7980
receiverName: '',
8081
content: '',
8182
images: [] as string[],

src/app/send/(process)/content/page.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ const SendContentPage = () => {
267267
previewImages: previewImages
268268
}));
269269

270-
router.push(`/send/template${isGuest ? '?guest=true' : ''}`);
270+
router.push(`${isGuest ? '/send/sender?guest=true' : '/send/template'}`);
271271
};
272272

273273
/* 임시 저장 삭제 핸들러 */
@@ -294,15 +294,16 @@ const SendContentPage = () => {
294294
console.log('임시 저장 조회 성공', response.data);
295295

296296
console.log('상태 변경됨');
297-
setLetterState({
297+
setLetterState((prev) => ({
298+
...prev,
298299
draftId: response.data.draftKey,
299300
receiverName: response.data.receiverName,
300301
content: response.data.content,
301302
images: response.data.images,
302303
previewImages: response.data.images,
303304
templateType: 0,
304305
letterId: null
305-
});
306+
}));
306307

307308
// 각 input 상태 업데이트
308309
setDraftId(response.data.draftKey);

src/app/send/(process)/layout.tsx

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
'use client';
22

3+
import Loader, { LoaderContainer } from '@/components/common/Loader';
34
import NavigatorBar from '@/components/common/NavigatorBar';
45
import ProgressBar from '@/components/common/ProgressBar';
56
import { theme } from '@/styles/theme';
6-
import { usePathname } from 'next/navigation';
7-
import React from 'react';
7+
import { usePathname, useSearchParams } from 'next/navigation';
8+
import React, { Suspense } from 'react';
89
import styled from 'styled-components';
910

1011
interface SendLayoutProps {
@@ -13,12 +14,20 @@ interface SendLayoutProps {
1314

1415
const SendLayout = ({ children }: SendLayoutProps) => {
1516
const pathname = usePathname();
17+
const searchParams = useSearchParams();
18+
const isGuest = searchParams.get('guest') === 'true';
1619

1720
const current =
1821
pathname === '/send/receiver'
1922
? 1
2023
: pathname === '/send/content'
2124
? 2
25+
: isGuest
26+
? pathname === '/send/sender'
27+
? 3
28+
: pathname === '/send/template'
29+
? 4
30+
: null
2231
: pathname === '/send/template'
2332
? 3
2433
: null;
@@ -30,15 +39,27 @@ const SendLayout = ({ children }: SendLayoutProps) => {
3039
</NavigatorBarWrapper>
3140
{current && (
3241
<ProgressBarWrapper>
33-
<ProgressBar current={current} total={3} />
42+
<ProgressBar current={current} total={isGuest ? 4 : 3} />
3443
</ProgressBarWrapper>
3544
)}
3645
{children}
3746
</Container>
3847
);
3948
};
4049

41-
export default SendLayout;
50+
export default function SendLayouting({ children }: SendLayoutProps) {
51+
return (
52+
<Suspense
53+
fallback={
54+
<LoaderContainer>
55+
<Loader />
56+
</LoaderContainer>
57+
}
58+
>
59+
<SendLayout>{children}</SendLayout>
60+
</Suspense>
61+
);
62+
}
4263

4364
const Container = styled.div`
4465
width: 100%;

src/app/send/(process)/preview/page.tsx

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,15 @@ const SendPreviewPage = () => {
2121
const searchParams = useSearchParams();
2222
const isKakaoLoaded = useKakaoSDK();
2323
const [letterState, setLetterState] = useRecoilState(sendLetterState);
24-
const { draftId, receiverName, content, images, templateType, letterId } =
25-
useRecoilValue(sendLetterState);
24+
const {
25+
draftId,
26+
senderName,
27+
receiverName,
28+
content,
29+
images,
30+
templateType,
31+
letterId
32+
} = useRecoilValue(sendLetterState);
2633
const { name } = useRecoilValue(userState);
2734
const [isImage, setIsImage] = useState<boolean>(false);
2835
const [letterCode, setLetterCode] = useState<string>('');
@@ -86,6 +93,7 @@ const SendPreviewPage = () => {
8693
if (isGuest) {
8794
// 비회원 편지 저장 API 연동
8895
const response = await postAnonymousSendLetter({
96+
senderName,
8997
receiverName,
9098
content,
9199
images,
@@ -120,7 +128,7 @@ const SendPreviewPage = () => {
120128
requestUrl: location.origin + location.pathname,
121129
templateId: 112798,
122130
templateArgs: {
123-
senderName: isGuest ? receiverName + ' 님께' : name + ' 님으로부터',
131+
senderName: `${isGuest ? senderName : name}`,
124132
id: letterCode
125133
},
126134
serverCallbackArgs: {
@@ -204,7 +212,11 @@ const SendPreviewPage = () => {
204212
buttonType="primary"
205213
text="카카오로 편지 보내기"
206214
onClick={handleSendLetterAndShare}
207-
disabled={!receiverName || !content || isLoading}
215+
disabled={
216+
isGuest
217+
? !receiverName || !content || !senderName || isLoading
218+
: !receiverName || !content || isLoading
219+
}
208220
>
209221
<Image
210222
src="/assets/icons/ic_kakao_talk.svg"

src/app/send/(process)/receiver/page.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,15 +212,16 @@ const SendReceiverPage = () => {
212212
console.log('임시 저장 조회 성공', response.data);
213213

214214
console.log('상태 변경됨');
215-
setLetterState({
215+
setLetterState((prev) => ({
216+
...prev,
216217
draftId: response.data.draftKey,
217218
receiverName: response.data.receiverName,
218219
content: response.data.content,
219220
images: response.data.images,
220221
previewImages: response.data.images,
221222
templateType: 0,
222223
letterId: null
223-
});
224+
}));
224225

225226
// 각 input 상태 업데이트
226227
setDraftId(response.data.draftKey);
@@ -250,7 +251,7 @@ const SendReceiverPage = () => {
250251
)}
251252
<Container>
252253
<Column>
253-
<Label>편지를 받는 사람</Label>
254+
<Label>{isGuest && 'To.'} 편지를 받는 사람</Label>
254255
<Input
255256
inputType="boxText"
256257
value={receiver}

0 commit comments

Comments
 (0)