ReviewContent.jsx
Never
import React, { useEffect, useState } from "react"; import { Button } from "reactstrap"; import app from "firebase/app"; import { TextArea } from "../../containers/StyledComponent/Index"; import MDSpinner from "react-md-spinner"; import StarRatings from "react-star-ratings"; import Rating from "material-ui-rating"; function ReviewContent(props) { const [review, setReviews] = useState({ isLoading: true, isPaid: false, hasilInput: "", input: "" }); const [reviewed, setReviewed] = useState({ data: [], isSumbit: false }); const [rating, setRating] = useState({ rating: 0 }); const changeRating = (Rating, name) => { setRating({ rating: Rating }); }; useEffect(() => { const db = app.firestore(); if (props.user === "logout") { db.collection("courses") .doc(props.id) .get() .then(val => { if (val.data().reviews === undefined) { setReviewed({ data: null }); } else { setReviewed({ data: val.data().reviews }); } }); setReviews({ isPaid: false, isLoading: false }); } else { db.collection("courses") .doc(props.id) .get() .then(val => { console.log("myCOurse", val.data().reviews); if (val.data().reviews === undefined) { setReviewed({ data: null }); } else { if (val.data().reviews.user_id === props.id) { setReviewed({ data: val.data().reviews, isSumbit: true }); } else { setReviewed({ data: val.data().reviews, isSumbit: false }); } } }); db.collection("users") .doc(props.user) .get() .then(val => { if (val.data().myCourse === undefined) { setReviews({ isPaid: false, isLoading: false, ...val.data() }); } else { const isPaid = val.data().myCourse.includes(props.id); console.log(isPaid); if (isPaid) { setReviews({ isPaid: true, isLoading: false, ...val.data() }); } else { setReviews({ isPaid: false, isLoading: false, ...val.data() }); } } }); } }, [props]); const handleSubmit = evt => { let db = app.firestore(); evt.preventDefault(); const courseId = props.id; let addCourse = db.collection("courses").doc(courseId); let data = { photo: review.photo_url, name: review.name, reviews: review.input, user_id: props.user, rating: rating }; return addCourse .update({ reviews: app.firestore.FieldValue.arrayUnion(data) }) .then(function() { setReviews({ ...review, isLoading: true }); db.collection("courses") .doc(courseId) .get() .then(val => { console.log("myCOursebaru", val.data().reviews); if (val.data().reviews === undefined) { console.log("undefined"); setReviewed({ data: [] }); } else { console.log("ada"); setReviewed({ data: val.data().reviews, isSumbit: true }); setReviews({ ...review, input: "", isLoading: false }); } }) .catch(function(error) {}); }) .catch(function(error) {}); }; const handleChange = evt => { evt.preventDefault(); setReviews({ ...review, [evt.target.name]: evt.target.value }); }; if (reviewed.data === null) { return ( <div> <div> <div style={{ display: "flex", marginBottom: "10px", width: "100%", padding: "20px 20px 30px 20px" }} > <div>Belum ada review dari user</div> <hr /> </div> </div> {review.isPaid ? ( <div> <form onSubmit={e => { // preventDefault agar tidak merefresh page ketika //submit e.preventDefault(); handleSubmit(e)} } > <TextArea name="input" type="text-area" onChange={(e) => { // Pakai operator spread ...review biar properti yang // lain ga kena efeknya // Yang kerubah cuma properti input setReview({...review, input : e.target.value })} } placeholder="Masukan review" value={review.input} /> <Button color="success" type="submit" value="Submit"> Submit </Button> </form> </div> ) : ( <div> <form> <TextArea name="review" type="text-area" placeholder="Masukan review" disabled /> <Button color="success" type="submit" value="Submit"> Submit </Button> </form> </div> )} </div> ); } else { return ( <div> {reviewed.data.map(val => { return ( <div> <div style={{ display: "flex", marginBottom: "10px", width: "100%", padding: "20px 20px 30px 20px" }} > <div style={{ borderRight: "10px solid transparent" }} > <img src={val.photo} alt="logo" width="24px" height="24px" style={{ borderRadius: "50%" }} /> </div> <div style={{ width: "100%" }} > <div>{val.name}</div> <div style={{ height: "100%", width: "100%" }} > {val.reviews} </div> <StarRatings rating={val.rating} starRatedColor="blue" numberOfStars={5} name="rating" /> {/* <Rating rating={val.rating} max={5} name="rating" /> */} </div> </div> <hr /> </div> ); })} {review.isLoading ? <MDSpinner size={24} /> : <div />} {review.isPaid ? ( <div> {reviewed.isSumbit ? ( <form onSubmit={e => handleSubmit(e)} > <TextArea name="input" type="text-area" onChange={(e) => { // Pakai operator spread ...review biar properti yang // lain ga kena efeknya // Yang kerubah cuma properti input setReview({...review, input : e.target.value })} } placeholder="Masukan review" value={review.input} disabled /> <Button type="submit" color="success" value="Submit" disabled> Submit </Button> </form> ) : ( <form onSubmit={e => { // preventDefault agar tidak merefresh page ketika //submit e.preventDefault(); handleSubmit(e); }}> <TextArea onChange={(e) => { // Pakai operator spread ...review biar properti yang // lain ga kena efeknya // Yang kerubah cuma properti input setReview({...review, input : e.target.value })} } name="input" type="text-area" placeholder="Masukan review" value={review.input} /> <StarRatings rating={rating.rating} starRatedColor="blue" changeRating={changeRating} numberOfStars={5} name="rating" /> {/* <Rating rating={rating.rating} changeRating={changeRating} max={5} name="rating" /> */} <Button color="success" type="submit" value="Submit"> Submit </Button> </form> )} </div> ) : ( <div> <form onSubmit={e => { // preventDefault agar tidak merefresh page ketika //submit e.preventDefault(); handleSubmit(e) }} > <TextArea name="review" type="text-area" placeholder="Masukan review" disabled /> <Button type="submit" color="success" value="Submit" disabled> Submit </Button> </form> </div> )} </div> ); } } export default ReviewContent;
Raw Text
-
https://medium.com/@hoseeyrosery/secret-weight-loss-tips-for-fitspresso-55cd675efa58
2 min ago
-
GlucoFreeze
2 min ago
-
Untitled
22 min ago
-
Untitled
28 min ago
-
It’s Daisy’s First Day As A FreeUse Cleaning Lady For Her Master, And She's Eager To Learn The
29 min ago
-
Adult Telegram Channels
37 min ago
-
https://www.facebook.com/ZenCortexHearingSupplement/
38 min ago
-
Untitled
48 min ago
-
Top 8 Ways To Buy A Used Hero Keto Acv Gummies Reviews
54 min ago
-
Oem Keto Gummies Australia(2024) 100% Safe, Does It Really Work Or Not?
57 min ago