import { useContext, useEffect, useState } from "react"; import { AppSettingsProviderContext } from "@renderer/context"; import { PostCard, LoaderSpin } from "@renderer/components"; import { toast, Button } from "@renderer/components//ui"; import { t } from "i18next"; export const Posts = () => { const { webApi } = useContext(AppSettingsProviderContext); const [loading, setLoading] = useState(true); const [posts, setPosts] = useState([]); const [nextPage, setNextPage] = useState(1); const handleDelete = (id: string) => { webApi .deletePost(id) .then(() => { toast.success(t("removeSharingSuccessfully")); setPosts(posts.filter((post) => post.id !== id)); }) .catch((error) => { toast.error(t("removeSharingFailed"), { description: error.message }); }); }; const fetchPosts = async (page: number = nextPage) => { if (!page) return; webApi .posts({ page, items: 10, }) .then((res) => { setPosts([...posts, ...res.posts]); setNextPage(res.next); }) .catch((err) => { toast.error(err.message); }) .finally(() => { setLoading(false); }); }; useEffect(() => { fetchPosts(); }, []); if (loading) { return ; } return (
{posts.length === 0 && (
{t("noOneSharedYet")}
)}
{posts.map((post) => ( ))}
{nextPage && (
)}
); };