Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 8x 8x 8x 8x 8x 5x 5x 1x 1x 4x 8x | import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import { useNavigate, useParams } from "react-router-dom";
import React from "react";
import axios from "axios";
import { toast } from "react-toastify";
import ReviewForm from "main/components/MyReviews/ReviewForm";
import { useBackend } from "main/utils/useBackend";
export default function PostReviewPage() {
const navigate = useNavigate();
const { id } = useParams();
const { data: menuItems } = useBackend(
// Stryker disable next-line all : don't test internal caching of React Query
[`/api/diningcommons/menuitem?id=${id}`],
// Stryker disable next-line all
{
// Stryker disable next-line all : the default method is get, so replacing with an empty string will do nothing
method: "GET",
// Stryker disable next-line all : id will be defined
url: `/api/diningcommons/menuitem?id=${id}`,
},
// Stryker disable next-line all : Don't test empty initial data
[],
);
const itemName = menuItems.name;
const submitReview = async (formData) => {
try {
await axios.post("/api/reviews/post", null, {
params: {
itemId: id,
reviewerComments: formData.reviewerComments,
itemsStars: formData.itemsStars,
dateItemServed: formData.dateItemServed,
},
});
// Stryker disable next-line all : itemName will be defined
toast(`Review submitted for ${itemName}`);
navigate(-1);
} catch (err) {
toast.error(
`Error submitting review: ${err.response?.data?.error || err.message}`,
);
}
};
return (
<BasicLayout>
<div className="pt-2">
<h1>Post a review for Menu Item {id}</h1>
<ReviewForm initialItemName={itemName} submitAction={submitReview} />
</div>
</BasicLayout>
);
}
|