'use client'; import { useState, useEffect } from 'react'; import Link from "next/link"; import { Input } from "@/components/ui/input"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import strings from "@/strings.json"; type Post = { id: string; title: string; slug: string; category: string; date: string; }; export function Sidebar() { const [posts, setPosts] = useState([]); const [error, setError] = useState(''); const [loadingPosts, setLoadingPosts] = useState(true); const [loadingCategories, setLoadingCategories] = useState(true); const [uniqueCategories, setUniqueCategories] = useState<{ name: string; slug: string }[]>([]); useEffect(() => { console.log(strings.logsFetchPostList); fetch('http://localhost:3001/api/posts/fetchList') .then(response => response.json()) .then(data => { if (!data.posts) { throw new Error(strings.errorsFetchPostsFailFancy); } console.log(strings.logsOnFetchedPosts); setPosts(data.posts); setLoadingPosts(false); }) .catch(error => { console.error(error); setError(`${strings.errorsFetchPostsFailFancy}: ${error.message}`); setLoadingPosts(false); }); console.log(strings.logsFetchCategoryList); fetch('http://localhost:3001/api/categories/fetchList') .then(response => response.json()) .then(data => { if (!data.categories) { throw new Error(strings.errorsFetchCategoryListFail); } console.log(strings.logsOnFetchedCategory); const categories = data.categories.map((cat: { name: string, slug: string }) => ({ name: cat.name, slug: cat.slug, })); setUniqueCategories(categories); setLoadingCategories(false); }) .catch(error => { console.error(error); setError(`${strings.errorsFetchCategoriesErrCtxFancy} ${error.message}`); setLoadingCategories(false); }); }, []); return ( ); }