From 433466a3947e75a36b811795bc21be1fff10b5e8 Mon Sep 17 00:00:00 2001 From: jackyzha0 Date: Mon, 11 May 2020 21:11:16 -0700 Subject: backend redir --- frontend/src/components/NewPaste.js | 124 ++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 frontend/src/components/NewPaste.js (limited to 'frontend/src/components/NewPaste.js') diff --git a/frontend/src/components/NewPaste.js b/frontend/src/components/NewPaste.js new file mode 100644 index 0000000..2ad9533 --- /dev/null +++ b/frontend/src/components/NewPaste.js @@ -0,0 +1,124 @@ +import React from 'react'; +import { TitleInput, PasteInput } from './Inputs' +import OptionsContainer from './Options' +import axios from 'axios'; +import { Redirect } from 'react-router-dom' + +class NewPaste extends React.Component { + constructor(props) { + super(props); + this.state = { + title: '', + content: '', + pass: '', + expiry: '', + hash: '', + }; + + this.handleChange = this.handleChange.bind(this); + this.handleSubmit = this.handleSubmit.bind(this); + } + + renderRedirect = () => { + if (this.state.hash !== '') { + const redirUrl = `/${this.state.hash}` + return + } + } + + componentDidUpdate() { + if (this.state.title === "") { + document.title = `ctrl-v`; + } else { + document.title = `ctrl-v | ${this.state.title}`; + } + } + + handleChange(event) { + const target = event.target; + const name = target.name; + + this.setState({ + [name]: target.value + }); + } + + parseExpiry(e) { + var cur = new Date(); + var inSeconds = 0 + switch (e) { + case '5 years': + inSeconds = 600 * 6 * 24 * 7 * 4 * 12 * 5 + break; + case '1 year': + inSeconds = 600 * 6 * 24 * 7 * 4 * 12 + break; + case '1 month': + inSeconds = 600 * 6 * 24 * 7 * 4 + break; + case '1 day': + inSeconds = 600 * 6 * 24 + break; + case '1 hour': + inSeconds = 600 * 6 + break; + case '10 min': + inSeconds = 600 + break; + case '1 week': + default: + inSeconds = 600 * 6 * 24 * 7 + break; + } + return new Date(cur.getTime() + inSeconds * 1000).toISOString(); + } + + handleSubmit(event) { + var bodyFormData = new FormData(); + bodyFormData.set('title', this.state.title); + bodyFormData.set('content', this.state.content); + bodyFormData.set('password', this.state.pass); + bodyFormData.set('expiry', this.parseExpiry(this.state.expiry)); + + axios({ + method: 'post', + url: 'http://localhost:8080/api', + data: bodyFormData, + headers: { 'Content-Type': 'multipart/form-data' }, + }).then((response) => { + + // on success, redir + this.setState({ hash: response.data.hash }) + }).catch((response) => { + // TODO: handle error + console.log(response); + }); + + event.preventDefault(); + } + + render() { + return ( +
+ {this.renderRedirect()} + + + + + + ); + } +} + +export default NewPaste \ No newline at end of file -- cgit v1.2.3