import CommentsModal from "@/components/comments/CommentsModal"; import UserStoryForm from "@/components/user-stories/UserStoryForm"; import { useState, useEffect } from "react"; import { useLoader } from "@/context/LoaderContext" import { useToast } from '@/context/ToastContext'; import { FaPencilAlt } from "react-icons/fa"; import { FaTrashAlt } from "react-icons/fa"; import { FaEye } from "react-icons/fa"; import { IoMdAdd } from "react-icons/io"; import { BiSolidCommentDetail } from "react-icons/bi"; import { Button } from "@material-tailwind/react"; import { fetchAllUserStories, deleteUserStory } from "@/services/apis/userStories"; const UserStories = () => { const toast = useToast(); const { startGlobalLoading, stopGlobalLoading } = useLoader() // ------------------------------------------------------ const [stories, setStories] = useState([]) const [isFormOpen, setIsFormOpen] = useState(false) const [isEditing, setIsEditing] = useState(false) const [viewOnly, setViewOnly] = useState(false); const [selectedStory, setSelectedStory] = useState(null) // Comments modal state // Used for comments opened and process the rest in comment modal const [isCommentOpen, setIsCommentOpen] = useState(false); const [selectedStoryId, setSelectedStoryId] = useState(null); // ------------------------------------------------------ const handleFormOpen = () => setIsFormOpen(!isFormOpen) const handleCommentOpen = () => setIsCommentOpen(!isCommentOpen) const handleCreateClick = () => { setIsEditing(false); setViewOnly(false); setSelectedStory(null); handleFormOpen(); }; const handleEditClick = (storyData) => { setIsEditing(true); setViewOnly(false); setSelectedStory(storyData); handleFormOpen(); }; const handleViewClick = (storyData) => { setIsEditing(false); setViewOnly(true); setSelectedStory(storyData); handleFormOpen(); }; const handleCommentClick = async (id) => { handleCommentOpen() setSelectedStoryId(id); }; const initUserStories = async () => { try { startGlobalLoading() const userStories = await fetchAllUserStories() setStories(userStories) } catch (error) { console.error(error) toast.error("Error Fetching User Stories") } finally { stopGlobalLoading() } } const deleteStory = async (id) => { try { startGlobalLoading() await deleteUserStory(id) await initUserStories() toast.success("User Story Deleted Successfully") } catch (error) { console.error(error) toast.error("Error Deleting User Story") } finally { stopGlobalLoading() } } // ------------------------------------------------------ useEffect(() => { initUserStories(); }, []); return (

User Stories

{stories.length ? (
{stories.map((storyData) => (
{storyData.title}
handleViewClick(storyData)} /> handleEditClick(storyData)} /> handleCommentClick(storyData._id)} /> deleteStory(storyData._id)} />
))}
) : (

No User Stories Available...

)}
); }; export default UserStories;