import { useEffect } from "react"; import { useNavigate, useParams } from "react-router-dom"; import { getJSON } from "../../api"; import { langQuery, useI18n } from "../../i18n"; import { MOCK_POSTS } from "../../mocks/mockPosts"; import { POST_STREAM_USES_MOCK } from "../../components/messageStream/hooks/usePostStream"; import type { Post } from "../../types/post"; export function PostRedirect() { const { id } = useParams(); const { lang } = useI18n(); const navigate = useNavigate(); useEffect(() => { if (!id) { navigate("/browse", { replace: true }); return; } if (POST_STREAM_USES_MOCK) { const post = MOCK_POSTS.find((p) => p.id === id); navigate( post ? `/category/${post.categorySlug}#post-${post.id}` : "/browse", { replace: true }, ); return; } getJSON( `/api/posts/${id}?lang=${encodeURIComponent(langQuery(lang))}`, ) .then((post) => { navigate(`/category/${post.categorySlug}#post-${post.id}`, { replace: true, }); }) .catch(() => navigate("/browse", { replace: true })); }, [id, lang, navigate]); return
; }