76
77 try {
78 const response = await fetch('/api/reviews', {
79 method: 'POST',
80 headers: {
32app.get("/health", c => c.json({ status: "ok", timestamp: new Date().toISOString() }));
33
34export default app.fetch;
15 return c.json(response);
16 } catch (error) {
17 console.error('Error fetching messages:', error);
18 const response: MessagesResponse = {
19 success: false,
20 error: 'Failed to fetch messages'
21 };
22 return c.json(response, 500);
12 const [filters, setFilters] = useState<ReviewFilters>({});
13
14 const fetchReviews = async (newFilters: ReviewFilters = {}) => {
15 try {
16 const params = new URLSearchParams();
20 if (newFilters.sortBy) params.append('sortBy', newFilters.sortBy);
21
22 const response = await fetch(`/api/reviews?${params}`);
23 if (!response.ok) throw new Error('Failed to fetch reviews');
24 const data = await response.json();
25 setReviews(data);
26 } catch (error) {
27 console.error('Error fetching reviews:', error);
28 }
29 };
30
31 const fetchCompanies = async () => {
32 try {
33 const response = await fetch('/api/reviews/companies');
34 if (!response.ok) throw new Error('Failed to fetch companies');
35 const data = await response.json();
36 setCompanies(data);
37 } catch (error) {
38 console.error('Error fetching companies:', error);
39 }
40 };
43 const loadData = async () => {
44 setLoading(true);
45 await Promise.all([fetchReviews(), fetchCompanies()]);
46 setLoading(false);
47 };
51 const handleFilterChange = (newFilters: ReviewFilters) => {
52 setFilters(newFilters);
53 fetchReviews(newFilters);
54 };
55
56 const handleReviewSubmitted = () => {
57 // Refresh data after new review
58 fetchReviews(filters);
59 fetchCompanies();
60 // Switch to browse tab to see the new review
61 setActiveTab('browse');
26 return c.json(reviewsList);
27 } catch (error) {
28 console.error("Error fetching reviews:", error);
29 return c.json({ error: "Failed to fetch reviews" }, 500);
30 }
31});
89 return c.json(companies);
90 } catch (error) {
91 console.error("Error fetching companies:", error);
92 return c.json({ error: "Failed to fetch companies" }, 500);
93 }
94});
102 return c.json(companyReviews);
103 } catch (error) {
104 console.error("Error fetching company reviews:", error);
105 return c.json({ error: "Failed to fetch company reviews" }, 500);
106 }
107});
8 const [error, setError] = useState(null);
9
10 const fetchData = async () => {
11 try {
12 const userEndpoint = new URL(USER_ENDPOINT, window.location.origin);
13
14 const res = await fetch(userEndpoint);
15 const data = await res.json();
16 if (!res.ok) {
33
34 useEffect(() => {
35 fetchData();
36 }, []);
37
38 return { data, loading, error, refetch: fetchData };
39}
40
9 const [error, setError] = useState(null);
10
11 const fetchData = async () => {
12 try {
13 const projectEndpoint = new URL(PROJECT_ENDPOINT, window.location.origin);
17 if (branchId) filesEndpoint.searchParams.append("branchId", branchId);
18
19 const { project } = await fetch(projectEndpoint).then((res) =>
20 res.json()
21 );
22 const { files } = await fetch(filesEndpoint).then((res) => res.json());
23
24 setData({ project, files });
34 useEffect(() => {
35 if (!projectId) return;
36 fetchData();
37 }, [projectId, branchId]);
38
39 return { data, loading, error, refetch: fetchData };
40}
41
8 const [error, setError] = useState(null);
9
10 const fetchData = async () => {
11 try {
12 const res = await fetch(ENDPOINT);
13 const data = await res.json();
14 if (!res.ok) {
32
33 useEffect(() => {
34 fetchData();
35 }, []);
36
37 return { data, loading, error, refetch: fetchData };
38}
39
19 setError(null);
20 try {
21 const res = await fetch(ENDPOINT, {
22 method: "POST",
23 headers: {
12 setData(null);
13 setError(null);
14 const res = await fetch(ENDPOINT, {
15 method: "POST",
16 body: JSON.stringify({