@@ -46,21 +46,48 @@ import { useQuery, useQueryClient } from '@tanstack/react-query';
4646import { useAtom , useAtomValue , useSetAtom } from 'jotai' ;
4747
4848const 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