From e87a0bae9b8c95fa0947d5925e05a07eb0e0cb6f Mon Sep 17 00:00:00 2001 From: hamed <15238-genius.ha@users.noreply.drupalcode.org> Date: Thu, 30 Jul 2026 09:05:45 +0330 Subject: [PATCH] feat: add feature toggles for doctor share and ratings functionality --- app/doctor/[slug]/page.js | 5 ++++- components/doctor/detailDoctor/Title.js | 3 ++- .../doctor/detailDoctor/cards/comments/index.js | 6 +++++- components/doctor/detailDoctor/index.js | 9 ++++++--- components/doctor/index.js | 9 ++++++--- config/features.js | 14 ++++++++++++++ 6 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 config/features.js diff --git a/app/doctor/[slug]/page.js b/app/doctor/[slug]/page.js index bbb1d5f..fc71ef2 100644 --- a/app/doctor/[slug]/page.js +++ b/app/doctor/[slug]/page.js @@ -10,6 +10,7 @@ import { isNoindexDoctor } from "@/lib/entityQuality"; import specialtiesData from "@/data/specialties.json"; import { safeJsonLd } from "@/lib/sanitize"; import { imageUrl, doctorTitle } from "@/helper"; +import { FEATURES } from "@/config/features"; const API_URL = process.env.NEXT_PUBLIC_API_URL; const FALLBACK_IMG = "/assets/images/og-image.png"; @@ -189,7 +190,9 @@ async function Doctor({ params }) { url: imageUrl(doctor.img[0].url), }, }), - ...(!isUnclaimed && Number(doctor.point) > 0 && { + // امتیاز وقتی در صفحه پنهان است نباید در schema بیاید؛ گوگل داده ساختیافتهٔ + // نامرئی را نقض راهنما میداند. + ...(FEATURES.doctorRatings && !isUnclaimed && Number(doctor.point) > 0 && { aggregateRating: { "@type": "AggregateRating", ratingValue: doctor.point, diff --git a/components/doctor/detailDoctor/Title.js b/components/doctor/detailDoctor/Title.js index b5e8841..e7d6778 100644 --- a/components/doctor/detailDoctor/Title.js +++ b/components/doctor/detailDoctor/Title.js @@ -11,6 +11,7 @@ import Telegram from "@/components/icons/Telegram"; import Aparat from "@/components/icons/Aparat"; import Youtube from "@/components/icons/Youtube"; import Linkedin from "@/components/icons/Linkedin"; +import { FEATURES } from "@/config/features"; const SOCIAL_ICONS = { instagram: Instagram, @@ -22,7 +23,7 @@ const SOCIAL_ICONS = { function Title({ doctor }) { const isUnclaimed = doctor?.owner_status !== "claimed"; - const hasRating = Number(doctor?.point) > 0; + const hasRating = FEATURES.doctorRatings && Number(doctor?.point) > 0; return (
{doctorTitle(doctor?.name)}