Skip to content

Commit ef40d78

Browse files
committed
🐛 fix(#170): 편지 전송 단계 Suspense로 로딩 상태 제공
1 parent 828e761 commit ef40d78

5 files changed

Lines changed: 75 additions & 10 deletions

File tree

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

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

3-
import React, { useEffect, 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 Input from '@/components/common/Input';
@@ -23,6 +23,7 @@ import { postImage } from '@/api/image/image';
2323
import ConfirmModal from '@/components/common/ConfirmModal';
2424
import { draftModalState } from '@/recoil/draftStore';
2525
import DraftButton from '@/components/draft/DraftButton';
26+
import Loader, { LoaderContainer } from '@/components/common/Loader';
2627

2728
const SendContentPage = () => {
2829
const router = useRouter();
@@ -425,7 +426,19 @@ const SendContentPage = () => {
425426
);
426427
};
427428

428-
export default SendContentPage;
429+
export default function SendContentPaging() {
430+
return (
431+
<Suspense
432+
fallback={
433+
<LoaderContainer>
434+
<Loader />
435+
</LoaderContainer>
436+
}
437+
>
438+
<SendContentPage />
439+
</Suspense>
440+
);
441+
}
429442

430443
const Container = styled.div`
431444
width: 100%;

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

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

3-
import React, { useEffect, useState } from 'react';
3+
import React, { Suspense, useEffect, useState } from 'react';
44
import styled from 'styled-components';
55
import { theme } from '@/styles/theme';
66
import Button from '@/components/common/Button';
@@ -13,6 +13,7 @@ import { sendLetterState } from '@/recoil/letterStore';
1313
import useKakaoSDK from '@/hooks/useKakaoSDK';
1414
import { userState } from '@/recoil/userStore';
1515
import { getLetterShareStatus } from '@/api/letter/share';
16+
import Loader, { LoaderContainer } from '@/components/common/Loader';
1617

1718
const SendPreviewPage = () => {
1819
const router = useRouter();
@@ -205,7 +206,19 @@ const SendPreviewPage = () => {
205206
);
206207
};
207208

208-
export default SendPreviewPage;
209+
export default function SendPreviewPaging() {
210+
return (
211+
<Suspense
212+
fallback={
213+
<LoaderContainer>
214+
<Loader />
215+
</LoaderContainer>
216+
}
217+
>
218+
<SendPreviewPage />
219+
</Suspense>
220+
);
221+
}
209222

210223
const Container = styled.div`
211224
width: 100%;

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

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

3-
import React, { useEffect, 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 Input from '@/components/common/Input';
@@ -23,6 +23,7 @@ import { draftModalState } from '@/recoil/draftStore';
2323
import BottomSheet from '@/components/common/BottomSheet';
2424
import { checkKorean } from '@/utils/checkKorean';
2525
import DraftButton from '@/components/draft/DraftButton';
26+
import Loader, { LoaderContainer } from '@/components/common/Loader';
2627

2728
const SendReceiverPage = () => {
2829
const router = useRouter();
@@ -307,7 +308,19 @@ const SendReceiverPage = () => {
307308
);
308309
};
309310

310-
export default SendReceiverPage;
311+
export default function SendReceiverPaging() {
312+
return (
313+
<Suspense
314+
fallback={
315+
<LoaderContainer>
316+
<Loader />
317+
</LoaderContainer>
318+
}
319+
>
320+
<SendReceiverPage />
321+
</Suspense>
322+
);
323+
}
311324

312325
const Container = styled.div`
313326
width: 100%;

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

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

3-
import React, { useEffect, useState } from 'react';
3+
import React, { Suspense, useEffect, useState } from 'react';
44
import styled from 'styled-components';
55
import { theme } from '@/styles/theme';
66
import Button from '@/components/common/Button';
@@ -10,6 +10,7 @@ import { useRecoilValue, useSetRecoilState } from 'recoil';
1010
import { sendLetterState, useSsrComplectedState } from '@/recoil/letterStore';
1111
import LetterTemplateList from '@/components/letter/LetterTemplateList';
1212
import { ALL_TEMPLATES } from '@/constants/templates';
13+
import Loader, { LoaderContainer } from '@/components/common/Loader';
1314

1415
const SendTemplatePage = () => {
1516
const router = useRouter();
@@ -123,7 +124,19 @@ const SendTemplatePage = () => {
123124
);
124125
};
125126

126-
export default SendTemplatePage;
127+
export default function SendTemplatePaging() {
128+
return (
129+
<Suspense
130+
fallback={
131+
<LoaderContainer>
132+
<Loader />
133+
</LoaderContainer>
134+
}
135+
>
136+
<SendTemplatePage />
137+
</Suspense>
138+
);
139+
}
127140

128141
const Container = styled.div`
129142
width: 100%;

src/app/send/complete/page.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import BottomSheet from '@/components/common/BottomSheet';
44
import Button from '@/components/common/Button';
5+
import Loader, { LoaderContainer } from '@/components/common/Loader';
56
import OauthButton from '@/components/signup/OauthButton';
67
import { OAUTH } from '@/constants/oauth';
78
import { SEND_COMPLETE_SUBTEXT } from '@/constants/send/message';
@@ -11,7 +12,7 @@ import { theme } from '@/styles/theme';
1112
import { OAuthType } from '@/types/login';
1213
import Image from 'next/image';
1314
import { useRouter, useSearchParams } from 'next/navigation';
14-
import React, { useEffect, useState } from 'react';
15+
import React, { Suspense, useEffect, useState } from 'react';
1516
import { useRecoilValue } from 'recoil';
1617
import styled from 'styled-components';
1718

@@ -111,7 +112,19 @@ const SendCompletePage = () => {
111112
);
112113
};
113114

114-
export default SendCompletePage;
115+
export default function SendCompletePaging() {
116+
return (
117+
<Suspense
118+
fallback={
119+
<LoaderContainer>
120+
<Loader />
121+
</LoaderContainer>
122+
}
123+
>
124+
<SendCompletePage />
125+
</Suspense>
126+
);
127+
}
115128

116129
const Layout = styled.div`
117130
display: flex;

0 commit comments

Comments
 (0)