Skip to content

Commit ff39a9b

Browse files
committed
feat: 피드백 수신 후 새로고침 시 내용 사라지지 않도록 수정
1 parent 06b1f49 commit ff39a9b

File tree

1 file changed

+40
-18
lines changed

1 file changed

+40
-18
lines changed

src/pages/Posting/Posting.tsx

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,48 @@ import { useQuery, useQueryClient } from '@tanstack/react-query';
4646
import { useAtom, useAtomValue, useSetAtom } from 'jotai';
4747

4848
const Posting = () => {
49+
const { id } = useParams();
4950
const location = useLocation();
5051
const { article, articleId, articleTitle } = location?.state ?? {
5152
article: null,
5253
articleId: null,
5354
articleTitle: null,
5455
};
55-
const [content, setContent] = useState<string>(() => article ?? '');
56-
const [postTitle, setPostTitle] = useState(() => articleTitle ?? '');
56+
const [content, setContent] = useState<string>(() => {
57+
if (article) return article;
58+
return sessionStorage.getItem(`posting-content-${id}`) ?? '';
59+
});
60+
const [postTitle, setPostTitle] = useState(() => {
61+
if (articleTitle) return articleTitle;
62+
return sessionStorage.getItem(`posting-title-${id}`) ?? '';
63+
});
5764
const [isPending, setIsPending] = useState(false);
5865
const [disablePrompt, setDisablePrompt] = useState(false);
5966
const [postImages, setPostImages] = useAtom(postImagesAtom);
6067

61-
const [savedArticleId, setSavedArticleId] = useState<number | null>(() =>
62-
articleId ? Number(articleId) : null
63-
);
68+
const [savedArticleId, setSavedArticleId] = useState<number | null>(() => {
69+
if (articleId) return Number(articleId);
70+
const stored = sessionStorage.getItem(`posting-articleId-${id}`);
71+
return stored ? Number(stored) : null;
72+
});
73+
74+
useEffect(() => {
75+
if (savedArticleId) {
76+
sessionStorage.setItem(`posting-articleId-${id}`, String(savedArticleId));
77+
}
78+
}, [savedArticleId, id]);
79+
80+
useEffect(() => {
81+
if (content) {
82+
sessionStorage.setItem(`posting-content-${id}`, content);
83+
}
84+
}, [content, id]);
85+
86+
useEffect(() => {
87+
if (postTitle) {
88+
sessionStorage.setItem(`posting-title-${id}`, postTitle);
89+
}
90+
}, [postTitle, id]);
6491

6592
const { feedback, isError, isLoading, isStreaming, isComplete, startStream } =
6693
useArticleFeedback(savedArticleId);
@@ -78,17 +105,12 @@ const Posting = () => {
78105
const width = useWindowWidth();
79106
const isMobile = width <= breakpoints.mobile;
80107
const buttonFontSize = isMobile ? '12px' : '16px';
81-
const { id } = useParams();
82108
const [progress, setProgress] = useState(0);
83109

84110
usePrompt(!disablePrompt);
85111

86112
useEffect(() => {
87-
document.documentElement.scrollTo({
88-
top: 0,
89-
left: 0,
90-
behavior: 'instant',
91-
});
113+
document.documentElement.scrollTo({ top: 0, left: 0, behavior: 'instant' });
92114
}, []);
93115

94116
useEffect(() => {
@@ -152,10 +174,7 @@ const Posting = () => {
152174
if (sortedImages.length > 0) {
153175
const files = sortedImages.map((imgObj) => imgObj.img);
154176
try {
155-
uploadedUrls = await uploadImages({
156-
files,
157-
category: 'ARTICLE',
158-
});
177+
uploadedUrls = await uploadImages({ files, category: 'ARTICLE' });
159178
} catch (err: unknown) {
160179
const e = err as { response?: { data?: { message?: string } } };
161180
setAlert({
@@ -231,6 +250,9 @@ const Posting = () => {
231250
const savedId = await handleSaveArticle();
232251

233252
if (savedId) {
253+
sessionStorage.removeItem(`posting-articleId-${id}`);
254+
sessionStorage.removeItem(`posting-content-${id}`);
255+
sessionStorage.removeItem(`posting-title-${id}`);
234256
setDashboardView('article');
235257
setSelectedPostId(savedId);
236258
setDisablePrompt(true);
@@ -275,8 +297,8 @@ const Posting = () => {
275297
<PostEditor
276298
forwardContent={setContent}
277299
forwardTitle={setPostTitle}
278-
content={article}
279-
title={articleTitle}
300+
content={content}
301+
title={postTitle}
280302
/>
281303
<Spacer h={22} />
282304
<Flex
@@ -326,7 +348,7 @@ const Posting = () => {
326348
</SText>
327349
</AiFeedbackButton>
328350
</AiFeedbackButtonWrapper>
329-
{!isError &&feedback && (
351+
{!isError && feedback && (
330352
<>
331353
<Spacer h={spacing} />
332354
<ArticleFeedbackPanel

0 commit comments

Comments
 (0)