"use client"; import { Reveal } from "@/components/landing-page/Reveal"; import { error, loading, successCallback } from "@/config/swal"; import { getFeedback, postUserFeedback } from "@/service/landing/landing"; import React, { useEffect, useState } from "react"; import { useTranslations } from "next-intl"; import Image from "next/image"; interface RatingProps { label: string; onRate: (rating: number) => void; } const Rating: React.FC = ({ label, onRate }) => { const [selected, setSelected] = useState(0); const handleClick = (rating: number) => { setSelected(rating); onRate(rating); }; return (
{label}
{[1, 2, 3, 4, 5].map((star) => ( ))}
); }; const FeedbackForm: React.FC = () => { const [ratings, setRatings] = useState({ accessibility: 0, appearance: 0, content: 0, }); useEffect(() => { async function initState() { const response = await getFeedback(); // console.log(response?.data?.data); setRatings(response?.data?.data); } initState(); }, []); type Feedback = { feedbackId: any; score: any; }; const [userFeedbacks, setUserFeedbacks] = useState([]); const [hasMounted, setHasMounted] = useState(false); const t = useTranslations("LandingPage"); const handleRatingChange = (id: any, score: any) => { const listData = [...userFeedbacks]; const dataIdx = userFeedbacks.findIndex((o) => o.feedbackId === id); // console.log("idx :", dataIdx); // console.log("Before :", listData); if (dataIdx !== -1) { // console.log("update"); listData[dataIdx].score = score; } else { const data = { feedbackId: id, score, }; listData.push(data); } setUserFeedbacks(listData); // console.log("After :", userFeedbacks); }; const handleSubmit = async () => { loading(); // console.log("Save Feedback :", userFeedbacks); const response = await postUserFeedback(); close(); if (response?.error) { error(response?.message); return false; } successCallback("Terima kasih, feedback Anda telah terkirim"); }; async function onSubmit() { // loading(); // let finalData = { // name: data.name, // email: data.email, // title : data.title, // message: data.title // } // console.log(finalData); // const response = await sendMessage(finalData); // close(); // successCallback(); } // Hooks useEffect(() => { setHasMounted(true); }, []); // Render if (!hasMounted) return null; return (
{/* Feedback */}

{t("userFeedback", { defaultValue: "User Feedback" })}

handleRatingChange("accessibility", rating)} /> handleRatingChange("appearance", rating)} /> handleRatingChange("content", rating)} />
); }; export default FeedbackForm;