From 6642f5cfe160ef7b3162481f8f4d48f7696b0b28 Mon Sep 17 00:00:00 2001 From: Samandar Turgunboyev Date: Thu, 26 Feb 2026 13:08:05 +0500 Subject: [PATCH] fix --- src/app/[locale]/about/page.tsx | 54 ++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/src/app/[locale]/about/page.tsx b/src/app/[locale]/about/page.tsx index 46ff8fb..f4425a4 100644 --- a/src/app/[locale]/about/page.tsx +++ b/src/app/[locale]/about/page.tsx @@ -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 { - 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 { } } +// ==================== +// 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 (
+ {/* Client-side SEO yangilash */} + + + {/* Hero + Content + Form */}