import React, { useEffect } from 'react'; import { useParams, Link, useNavigate } from 'react-router-dom'; import { useQuery } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { ArrowLeft, Home } from 'lucide-react'; import DOMPurify from 'dompurify'; import { Loading, Card } from '../../components/common'; import { cmsService } from '../../services/cms.service'; import { api } from '../../config/api'; import '../../styles/prose-overrides.css'; export const LegalPage: React.FC = () => { const { slug } = useParams<{ slug: string }>(); const { i18n } = useTranslation(); const navigate = useNavigate(); // Extract page slug from pathname if not in params (for static routes like /impressum) const pathname = window.location.pathname; const pageSlug = slug || pathname.split('/').pop() || ''; // Fetch settings to get default language const { data: settingsData } = useQuery({ queryKey: ['public-settings'], queryFn: async () => { const response = await api.get('/public/settings'); return response.data; }, staleTime: 5 * 60 * 1000, // Cache for 5 minutes }); // Use admin settings language const lang = settingsData?.default_language || 'en'; // Fetch page content const { data: page, isLoading, error } = useQuery({ queryKey: ['legal-page', pageSlug, lang], queryFn: () => cmsService.getPublicPage(pageSlug, lang), enabled: !!pageSlug && pageSlug !== '' && !!settingsData, }); // Set i18n language when settings are loaded useEffect(() => { if (settingsData?.default_language) { i18n.changeLanguage(settingsData.default_language); } }, [settingsData, i18n]); // Update page title useEffect(() => { if (page?.title) { document.title = `${page.title} - PicPeak`; } }, [page?.title]); if (isLoading) { return (
); } if (error || !page) { return (

Page Not Found

The page you're looking for doesn't exist.

Go to Homepage
); } return (
{/* Header */}
{/* Content */}

{page.title}

{/* Footer */}
); };