diff --git a/frontend/src/pages/VotingPage.jsx b/frontend/src/pages/VotingPage.jsx index cfe3363..8f795dd 100644 --- a/frontend/src/pages/VotingPage.jsx +++ b/frontend/src/pages/VotingPage.jsx @@ -1,24 +1,42 @@ // VotingPage.js -import React from "react"; +import React, { useState } from "react"; import { Bar } from "react-chartjs-2"; import { Chart as ChartJS, BarElement, CategoryScale, LinearScale } from "chart.js"; -import { useQuery } from "react-query"; +import { useMutation, useQuery } from "react-query"; import { useParams } from "react-router-dom"; import getPollData from "../services/getPollData"; import ErrorFallback from "../components/Errors/ErrorFallback"; +import createVoteService from "../services/createVoteService"; +import { FaBookmark } from "react-icons/fa"; +import {toast} from "react-toastify"; ChartJS.register(BarElement, CategoryScale, LinearScale); function VotingPage() { const { pollId } = useParams(); + const [seletedOption, setSeletedOption] = useState(null); const { data: poll, isLoading, isError, refetch } = useQuery(["poll", pollId], () => getPollData(pollId), { cacheTime : 10*100*60, // 10 minutes staleTime : 20*100*60, // 20 minutes }); - // Dummy chart data for visualization + const mutation = useMutation(createVoteService, { + onSuccess: (data) => { + toast.success("Vote given successfully"); + }, + onError: (error) => { + console.log(error); + toast.error(error?.response?.data?.message || "An unexpected error occurred"); + }, + }) + + const handleOptionSelect = (id) => { + mutation.mutate({ pollId, optionId: id }); + } + + const chartData = { labels: poll?.data?.pollData?.options.map(option => option.name), datasets: [ @@ -43,6 +61,7 @@ function VotingPage() { return (
{poll?.data?.pollData?.description || "Loading.."}
{/* Voting Options */}