fix
This commit is contained in:
@@ -1,24 +1,34 @@
|
||||
// app/[locale]/about/page.tsx
|
||||
'use client';
|
||||
|
||||
import { partner_api } from '@/features/about/lib/api';
|
||||
import { AboutContent } from '@/features/about/ui/AboutContent';
|
||||
import { AboutHero } from '@/features/about/ui/AboutHero';
|
||||
import { PartnershipForm } from '@/features/about/ui/AboutPage';
|
||||
import { BASE_URL } from '@/shared/config/api/URLs';
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import { Metadata } from 'next';
|
||||
import { useParams } from 'next/navigation';
|
||||
import { useEffect } from 'react';
|
||||
|
||||
interface Props {
|
||||
params: { locale: 'uz' | 'ru' | 'en' };
|
||||
}
|
||||
|
||||
// Har requestda server-side yangilanishi
|
||||
export const revalidate = 0;
|
||||
|
||||
// Helper: full image url
|
||||
function getImageUrl(image?: string | null): string {
|
||||
if (!image || image.length === 0) return '/placeholder.svg';
|
||||
return image.includes(BASE_URL) ? image : BASE_URL + image;
|
||||
}
|
||||
|
||||
// ====================
|
||||
// Server-side Metadata
|
||||
// ====================
|
||||
export async function generateMetadata({ params }: Props): Promise<Metadata> {
|
||||
const { locale } = await params;
|
||||
const { locale } = params;
|
||||
|
||||
try {
|
||||
const res = await partner_api.getAbout();
|
||||
@@ -72,9 +82,51 @@ export async function generateMetadata({ params }: Props): Promise<Metadata> {
|
||||
}
|
||||
}
|
||||
|
||||
// ====================
|
||||
// Client-side SEO Update
|
||||
// ====================
|
||||
function AboutSEO() {
|
||||
const { locale } = useParams();
|
||||
|
||||
const { data } = useQuery({
|
||||
queryKey: ['aboutData'],
|
||||
queryFn: async () => (await partner_api.getAbout()).data,
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (!data) return;
|
||||
const banner = data.banner;
|
||||
const title =
|
||||
locale === 'uz'
|
||||
? banner.title_uz
|
||||
: locale === 'ru'
|
||||
? banner.title_ru
|
||||
: banner.title_en;
|
||||
const description =
|
||||
locale === 'uz'
|
||||
? banner.description_uz
|
||||
: locale === 'ru'
|
||||
? banner.description_ru
|
||||
: banner.description_en;
|
||||
|
||||
document.title = title || 'Gastro Market';
|
||||
const descMeta = document.querySelector('meta[name="description"]');
|
||||
if (descMeta) descMeta.setAttribute('content', description || '');
|
||||
}, [data, locale]);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// ====================
|
||||
// Page Component
|
||||
// ====================
|
||||
const AboutPage = async () => {
|
||||
return (
|
||||
<div className="custom-container">
|
||||
{/* Client-side SEO yangilash */}
|
||||
<AboutSEO />
|
||||
|
||||
{/* Hero + Content + Form */}
|
||||
<AboutHero />
|
||||
<AboutContent />
|
||||
<PartnershipForm />
|
||||
|
||||
Reference in New Issue
Block a user