diff --git a/01-frontend/src/components/RatingSubmit.tsx b/01-frontend/src/components/RatingSubmit.tsx new file mode 100644 index 0000000..9cd06da --- /dev/null +++ b/01-frontend/src/components/RatingSubmit.tsx @@ -0,0 +1,7 @@ +type RatingSubmitType = { + articleId: string; + rating: number; + content: string; +}; + +export default RatingSubmitType; \ No newline at end of file diff --git a/01-frontend/src/helper/productpage/Ratings.tsx b/01-frontend/src/helper/productpage/Ratings.tsx index 97a35b9..151bbe8 100644 --- a/01-frontend/src/helper/productpage/Ratings.tsx +++ b/01-frontend/src/helper/productpage/Ratings.tsx @@ -1,14 +1,19 @@ -import { Box, Button, Divider, IconButton, Rating, Snackbar, SnackbarCloseReason, TextField, Typography } from "@mui/material"; -import RatingCard from "./RatingCard"; -import RatingType from "../../components/Rating"; -import React, { useState } from "react"; import { Close } from "@mui/icons-material"; -import {useTranslation} from 'react-i18next'; +import { Box, Button, Divider, IconButton, Rating, Snackbar, SnackbarCloseReason, TextField, Typography } from "@mui/material"; +import { useQuery } from "@tanstack/react-query"; +import React, { useState } from "react"; +import { useTranslation } from 'react-i18next'; +import RatingType from "../../components/Rating"; +import { submitRating } from "../query/Queries"; +import RatingCard from "./RatingCard"; +import RatingSubmitType from "../../components/RatingSubmit"; -export default function Ratings() { +export default function Ratings({itemId}: {itemId: string}) { const { t } = useTranslation(); const [open, setOpen] = useState(false); + const [ratingText, setRatingText] = useState(""); + const [ratingValue, setRatingValue] = useState(2.5); const handleClose = ( event: React.SyntheticEvent | Event, @@ -21,10 +26,23 @@ export default function Ratings() { setOpen(false); }; + const ratingData: RatingSubmitType = { + rating: ratingValue || 0, + content: ratingText || "", + articleId: itemId, // Konvertiert itemId in einen String, + }; + + const { refetch } = useQuery({ + queryKey: ["submitRating", ratingData], // Query-Key mit Daten + queryFn: () => submitRating(ratingData), + retry: 3, // Versucht es 3-mal erneut + retryDelay: 1000, // Wartezeit zwischen den Versuchen (in ms) + enabled: false, // Deaktiviert die automatische Ausführung + }); + const handleRatingSubmit = () => { - // Handle the rating submission logic here setOpen(true); - console.log("Rating submitted"); + refetch(); // Manuelles Auslösen der Abfrage } const action = ( @@ -69,13 +87,15 @@ export default function Ratings() {
{t('rateThisProduct')}: - + setRatingValue(value)} precision={0.5} /> setRatingText(e.target.value)} />
);