"use client"; import { sliderProps } from "@/utility/sliderProps"; import { useEffect, useState } from "react"; import Slider from "react-slick"; import GoogleReviewsBranding from "./GoogleReviewsBranding"; function TestimonialAbout() { const [nav1, setNav1] = useState(null); const [nav2, setNav2] = useState(null); const [slider1, setSlider1] = useState(null); const [slider2, setSlider2] = useState(null); const [reviews, setReviews] = useState([]); const [loading, setLoading] = useState(true); const [expandedReview, setExpandedReview] = useState(null); useEffect(() => { setNav1(slider1); setNav2(slider2); }, [slider1, slider2]); useEffect(() => { async function loadReviews() { try { const res = await fetch("/api/reviews"); const data = await res.json(); const cleaned = (data.reviews || []).filter(r => (r.text || r.description || r.snippet || r.review_text || r.body || r.content) && r.rating >= 4 ); setReviews(cleaned); } catch (error) { console.error("About: Failed to fetch reviews", error); } finally { setLoading(false); } } loadReviews(); }, []); const displayedReviews = reviews.length > 0 && reviews.length < 3 ? [...reviews, ...reviews, ...reviews] : reviews; function renderStars(rating) { return [...Array(5)].map((_, i) => ( )); } function getReviewText(r) { return r.text || r.description || r.snippet || r.review_text || r.body || r.content || ""; } function truncateText(text) { return text.length > 150 ? text.substring(0, 150) + "..." : text; } function getProfileImage(r) { const url = r.profile_photo_url || r.author_profile_photo_url || r.user?.thumbnail; if (!url) return null; return url.startsWith("http") ? url : `https://lh3.googleusercontent.com/${url}`; } function getInitials(name) { if (!name) return "U"; return name.split(' ').map(n => n[0]).join('').substring(0, 2).toUpperCase(); } const link = "https://www.google.com/maps/place/Shivas+Dosa+Restaurant/@43.4056825,-80.5035997,17z/data=!4m8!3m7!1s0x882bf579045db13b:0x258e9b3ccf2549d4!8m2!3d43.4056825!4d-80.5010248!9m1!1b1!16s%2Fg%2F11tj6q0n1j?entry=ttu&g_ep=EgoyMDI1MTIwOS4wIKXMDSoASAFQAw%3D%3D"; const thumbs = { dots: false, arrows: false, speed: 800, autoplay: true, focusOnSelect: true, slidesToShow: 3, slidesToScroll: 1, }; const slider = { arrows: false, dots: false, infinite: false, autoplay: true, speed: 500, fade: true, slidesToShow: 1, slidesToScroll: 1, }; return (
Customer Feedback

what our customer’s say us

{/* setSlider2(slider)} {...sliderProps.testimonialsFiveAuthors} className="testimonials-five-authors mb-20" data-aos="fade-up" data-aos-delay={50} data-aos-duration={1500} data-aos-offset={50} >
Author
Author
Author
Author
*/} setSlider1(slider)} {...sliderProps.testimonialsFiveContent} data-aos="fade-up" data-aos-delay={100} data-aos-duration={1500} data-aos-offset={50} > {loading ? (
Loading reviews...
) : displayedReviews.length > 0 ? ( displayedReviews.map((r, index) => { const fullText = getReviewText(r); const isExpanded = expandedReview === index; const profileImg = getProfileImage(r); const name = r.user?.name || r.author_name || "Customer"; return (
{profileImg ? ( {name} (e.target.style.display = 'none')} style={{ width: '100%', height: '100%', objectFit: 'cover' }} /> ) : ( {getInitials(name)} )}

{name}

{renderStars(r.rating)}
{isExpanded ? fullText : truncateText(fullText)}
{fullText.length > 200 && ( )}
); }) ) : (
No reviews available.
)}
Review us on Google
Left
right
Shape
{/*
Shape
*/}
Shape
); } export default TestimonialAbout;