From 8970edc59ffc6d0a95cc2222f682accd254ca2b6 Mon Sep 17 00:00:00 2001 From: miteruzo Date: Sun, 12 Jul 2026 11:17:23 +0900 Subject: [PATCH] #399 --- frontend/src/pages/posts/PostNewPage.tsx | 37 +++++------------------- 1 file changed, 8 insertions(+), 29 deletions(-) diff --git a/frontend/src/pages/posts/PostNewPage.tsx b/frontend/src/pages/posts/PostNewPage.tsx index ea9233f..14c1b50 100644 --- a/frontend/src/pages/posts/PostNewPage.tsx +++ b/frontend/src/pages/posts/PostNewPage.tsx @@ -49,7 +49,6 @@ const PostNewPage: FC = ({ user }) => { const [url, setURL] = useState ('') const thumbnailPreviewRef = useRef ('') - const urlRef = useRef ('') const videoFlg = useMemo (() => tags.split (/\s+/).some (tag => tag.replace (/\[.*\]$/, '') === '動画'), [tags]) @@ -85,13 +84,11 @@ const PostNewPage: FC = ({ user }) => { } const fetchTitle = useCallback (async () => { - const requestedURL = url - setTitleLoading (true) + setTitleLoading (true) try { const data = await apiGet<{ title: string }> ('/preview/title', { params: { url } }) - if (requestedURL === urlRef.current) - setTitle (current => current || data.title || '') + setTitle (data.title || '') } finally { @@ -100,7 +97,6 @@ const PostNewPage: FC = ({ user }) => { }, [url]) const fetchThumbnail = useCallback (async () => { - const requestedURL = url setThumbnailPreview ('') setThumbnailFile (null) setThumbnailLoading (true) @@ -111,13 +107,10 @@ const PostNewPage: FC = ({ user }) => { const data = await apiGet ('/preview/thumbnail', { params: { url }, responseType: 'blob' }) const imageURL = URL.createObjectURL (data) - if (requestedURL === urlRef.current) - { - setThumbnailPreview (current => current || imageURL) - setThumbnailFile (current => current || new File ([data], - 'thumbnail.png', - { type: data.type || 'image/png' })) - } + setThumbnailPreview (imageURL) + setThumbnailFile (new File ([data], + 'thumbnail.png', + { type: data.type || 'image/png' })) } finally { @@ -129,20 +122,6 @@ const PostNewPage: FC = ({ user }) => { thumbnailPreviewRef.current = thumbnailPreview }, [thumbnailPreview]) - useEffect (() => { - urlRef.current = url - }, [url]) - - useEffect (() => { - if (!(url)) - return - const timer = window.setTimeout (() => { - fetchTitle ().catch (() => undefined) - fetchThumbnail ().catch (() => undefined) - }, 500) - return () => window.clearTimeout (timer) - }, [fetchThumbnail, fetchTitle, url]) - if (!(editable)) return @@ -180,7 +159,7 @@ const PostNewPage: FC = ({ user }) => { onChange={ev => setTitle (ev.target.value)} disabled={titleLoading}/>
- URL 入力後に自動取得します. + 必要なタイミングで URL から取得できます.