"use client"; import Image from "next/image"; import React, { useState, useEffect, useContext } from "react"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; import Link from "next/link"; import axios from "axios"; import { backendUrl } from "@/utils/axios"; import slugify from "slugify"; import ProductContext from "@/app/contexts/productContext"; const DEFAULT_IMAGE = "/sidhi-mala/Designer_30.png"; const FaqCard = ({ params }) => { const { products } = useContext(ProductContext); // ✅ get products const [faq, setFaq] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchFaq = async () => { try { if (!products || products.length === 0) { console.log("❌ Products not loaded yet."); return; } // 1️⃣ Collect all unique subcategories from products const subcategories = products.map((p) => p.product_subcategory); // 2️⃣ Find subcategory by slug const matchedSub = subcategories.find( (sub) => slugify(sub?.subcategory_name || "", { lower: true }) === params.subcategory ); console.log("✅ Matched Subcategory for FAQ:", matchedSub); if (!matchedSub) { console.warn("⚠️ No subcategory found for slug:", params.subcategory); setError("Subcategory not found"); setLoading(false); return; } // 3️⃣ Fetch FAQs using subcategory ID const url = `${backendUrl}/products/faq/${matchedSub.category}/`; console.log("📡 Fetching FAQ from:", url); const faqRes = await axios.get(url); console.log("📥 Full FAQ Response:", faqRes); console.log("✅ FAQ Data:", faqRes.data); setFaq(faqRes.data); } catch (err) { console.error("❌ FAQ Fetch Error:", err); if (err.response) { console.error("⚠️ Response Status:", err.response.status); console.error("⚠️ Response Data:", err.response.data); } setError("Failed to fetch FAQs. Please try again later."); } finally { setLoading(false); } }; fetchFaq(); }, [products, params.subcategory]); if (loading) return
Loading FAQs...
; if (error) return{error}
; if (!faq || faq.length === 0) returnNo FAQs available.
; const hasImage = faq.some((item) => item.image !== null); const imageToShow = hasImage ? `${backendUrl}${faq.find((item) => item.image !== null).image}` : DEFAULT_IMAGE; return (