import React, { Component } from "react"; import { Form, Segment, Button, Message, Icon } from "semantic-ui-react"; import { quotes } from "./Quotes"; class ReplyForm extends Component { constructor(props) { super(props); this.state = { name: "", email: "", message: this.props.replyIndex !== undefined ? ">>" + this.props.replyIndex + "\n" : "", attachment: "", submittedName: "", submittedEmail: "", submittedMessage: "", replyRes: null, selectedFile: null }; this.handleChange = this.handleChange.bind(this); this.handleSubmit = this.handleSubmit.bind(this); } componentWillMount() { let userData = JSON.parse(localStorage.getItem("userData")); if (userData != null) { this.setState({ name: userData.name, email: userData.email }); } } handleChange(e) { const { name, value } = e.target; if (name === "hiddenInput") { let hiddenInput = document.getElementById("hiddenInput"); if (hiddenInput.files.length === 0) { this.setState({ selectedFile: null }); } else { let file = hiddenInput.files[0].name; this.setState({ selectedFile: file }); } } else { this.setState({ [name]: value }); } } handleSubmit() { const { name, email, message } = this.state; this.setState( { submittedName: name, submittedEmail: email, submittedMessage: message, replyRes: null }, () => { var { submittedName, submittedEmail, submittedMessage, selectedFile } = this.state; const { currentBoard, parent } = this.props; let password = JSON.parse(localStorage.getItem("settings")) .postPassword; let data = { board: currentBoard.dir, parent: parent, name: "", email: "", fielda: submittedName, fieldb: submittedEmail, message: submittedMessage, password: password }; if (selectedFile !== null) { let file = document.getElementById("hiddenInput").files[0]; data["file"] = file; } let userData = { name: name, email: email }; localStorage.setItem("userData", JSON.stringify(userData)); const formData = new FormData(); for (var key in data) { formData.append(key, data[key]); } fetch("https://bienvenidoainternet.org/cgi/api/post", { method: "POST", mode: "cors", redirect: "follow", body: formData }) .then(response => { return response.json(); }) .then(resource => { if (resource.state === "success") { this.randomQuote = quotes[Math.floor(Math.random() * quotes.length)]; this.setState({ replyRes: resource, message: "", selectedFile: null }); let ownPosts = JSON.parse(localStorage.getItem("ownPosts")); if (ownPosts === null) { ownPosts = {}; } // eslint-disable-next-line no-prototype-builtins if (!ownPosts.hasOwnProperty(currentBoard.dir)) { ownPosts[currentBoard.dir] = []; } ownPosts[currentBoard.dir] = ownPosts[currentBoard.dir].concat({ thread_id: parent, reply_id: resource.post_id }); localStorage.setItem("ownPosts", JSON.stringify(ownPosts)); } else { this.setState({ replyRes: resource }); } }); } ); } handleClick(e) { e.preventDefault(); document.getElementById("hiddenInput").click(); } render() { const { name, email, message, replyRes, attachment, selectedFile } = this.state; const { currentBoard, nightMode, quickReply, locked } = this.props; if (locked === 1) { return ( Hilo cerrado Este hilo ha sido cerrado y no admite nuevas respuestas. ); } return ( {replyRes !== null ? ( replyRes.state === "success" ? ( Gracias por tu post {this.randomQuote}
Nos tomó {replyRes.time_taken} segundos procesar tu mensaje.
) : ( {replyRes.state} {replyRes.message} ) ) : null}
{currentBoard.allow_image_replies === 1 ? ( {selectedFile === null ? "Adjuntar archivo" : selectedFile} ) : null}
); } } export default ReplyForm;