![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.ca/private_html/src/hooks/ |
import { useState, useEffect } from 'react';
import { useSession } from 'next-auth/react';
export interface TestimonialData {
id: string;
title: string;
content: string;
category: string;
impactLevel: string;
isPublic: boolean;
isFeatured: boolean;
helpfulVotes: number;
views: number;
createdAt: string;
beforeSituation?: string;
afterSituation?: string;
client?: {
id: string;
name: string;
profilePicture?: string;
};
lawyer?: {
id: string;
name: string;
profilePicture?: string;
};
case?: {
id: string;
title: string;
};
}
export interface TestimonialsData {
testimonials: TestimonialData[];
reviews: TestimonialData[];
isLoading: boolean;
error: string | null;
}
export function useTestimonials(userId: string): TestimonialsData {
const { data: session } = useSession();
const [testimonialsData, setTestimonialsData] = useState<TestimonialsData>({
testimonials: [],
reviews: [],
isLoading: true,
error: null,
});
useEffect(() => {
if (!userId) return;
const fetchTestimonialsData = async () => {
try {
setTestimonialsData(prev => ({ ...prev, isLoading: true, error: null }));
// Fetch testimonials where user is the lawyer (client testimonials about them)
const testimonialsResponse = await fetch(`/api/users/${userId}/testimonials`);
const testimonialsData = testimonialsResponse.ok ? await testimonialsResponse.json() : { testimonials: [] };
// Fetch reviews where user is the client (reviews they wrote about lawyers)
const reviewsResponse = await fetch(`/api/users/${userId}/reviews`);
const reviewsData = reviewsResponse.ok ? await reviewsResponse.json() : { reviews: [] };
setTestimonialsData({
testimonials: testimonialsData.testimonials || [],
reviews: reviewsData.reviews || [],
isLoading: false,
error: null,
});
} catch (error) {
console.error('Error fetching testimonials data:', error);
setTestimonialsData(prev => ({
...prev,
isLoading: false,
error: error instanceof Error ? error.message : 'Failed to fetch testimonials data',
}));
}
};
fetchTestimonialsData();
}, [userId]);
return testimonialsData;
}