PHP Classes

File: frontend/src/components/ShopCard/index.tsx

Recommend this page to a friend!
  Classes of Carlos Carvalho   yrprey PHP application   frontend/src/components/ShopCard/index.tsx   Download  
File: frontend/src/components/ShopCard/index.tsx
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: yrprey PHP application
Web app to learn about OWASP API vulnerabilities
Author: By
Last change:
Date: 8 months ago
Size: 4,995 bytes
 

Contents

Class file image Download
import Image from "next/image"; import { FaCheckCircle, FaEthereum, FaTrash } from "react-icons/fa"; import { useContext } from "react"; import { Context } from "@/context/context"; import axios from "axios"; import Swal from "sweetalert2"; import { ICardShop } from "@/interfaces/IChildren/ICardShop"; import { StyledCardShop } from "./style"; const CardShop = ({ image, title_image, title, name, value, id, }: ICardShop) => { const { router, tokenLocal, user, setUser } = useContext(Context); const onSubmitPurchase = async (data: any) => { try { const loginResponse = await axios.post( `${process.env.NEXT_PUBLIC_API}/profile`, { token: tokenLocal }, ); if (loginResponse.data.results[0].status === 200) { localStorage.clear(); localStorage.setItem("token", loginResponse.data.results[0].token); const user = loginResponse.data.results[0]; const dataString = JSON.stringify(user); localStorage.setItem("user", dataString); setUser(user); } } catch (error) { error; } try { const purchaseResponse = await axios.post( `${process.env.NEXT_PUBLIC_API}/buy`, data, ); if (purchaseResponse.data.results[0].status === 200) { Swal.fire({ position: "center", icon: "success", title: "Purchase made successfully", showConfirmButton: false, width: 600, padding: "3em", color: "#fff", background: "#28292a", backdrop: `rgba(0, 0, 0, 0.493)`, timer: 1500, }); } else { Swal.fire({ position: "center", icon: "error", title: "Insufficient funds", showConfirmButton: false, width: 600, padding: "3em", color: "#fff", background: "#28292a", backdrop: `rgba(0, 0, 0, 0.493)`, timer: 1500, }); } } catch (error) { error; } }; const onSubmitDelete = async () => { try { const response = await axios.post( `${process.env.NEXT_PUBLIC_API}/delete`, { id: id, role: user.role, token: tokenLocal, }, ); if (response.data.results[0].status === 200) { Swal.fire({ position: "center", icon: "success", title: "Successfully deleted", showConfirmButton: false, width: 600, padding: "3em", color: "#fff", background: "#28292a", backdrop: `rgba(0, 0, 0, 0.493)`, timer: 1500, }); } else { Swal.fire({ position: "center", icon: "error", title: "Something went wrong", showConfirmButton: false, width: 600, padding: "3em", color: "#fff", background: "#28292a", backdrop: `rgba(0, 0, 0, 0.493)`, timer: 1500, }); } } catch (error) { error; } }; return ( <StyledCardShop id={id}> <li className="card-container-shop"> <div className="flip-card-inner"> <div className="flip-card-front"> <div> <Image src={image} width="100" height="100" sizes="100" alt={title_image} className="img-card-shop" ></Image> </div> </div> <div className="flip-card-back"> <div className="text-content"> <div> <h1 className="text-title"> YRPrey Club {title} <span> ?<FaCheckCircle className="checked" /> </span> </h1> <span> {user?.role == "1" ? ( <FaTrash className="eth trash" onClick={onSubmitDelete} /> ) : ( <FaEthereum className="eth" /> )} </span> </div> <p className="text-name-item"> {name} {title} </p> </div> <div className="container-button"> <div className="text-details"> <p>Price</p> <p>{value} ETH</p> </div> <button className="btn-puschase-item" onClick={() => tokenLocal ? onSubmitPurchase({ token: tokenLocal, price: value, saldo: user.saldo, }) : router.push("/login") } > Puschase </button> </div> </div> </div> </li> </StyledCardShop> ); }; export default CardShop;