import React, { Component } from 'react' import LetterOptions from './LetterOptions' import Button from './Button' import Preview from './Preview' import LatestList from './LatestList' import { generatePdf, getLatest, removeLatest } from './apiHelper' //import './App.css'; class App extends Component { componentDidMount() { this._getLatest() } render() { const state = this.state || {} return (
) } _onSelectLatest(selectedOptions) { this.setState({ options: Object.assign({}, selectedOptions) }) } _onRemoveLatest(item) { removeLatest(item).then(() => { const latest = this.state.latest.filter((curr) => curr.id !== item.id) this.setState({ latest }) }) } _onClear() { window.location.reload() } _onGenerate() { const state = this.state || {} this.setState({ pdfIsLoading: true, pdfError: null, }) generatePdf(state.options) .then((data) => { const { id } = data this.setState({ pdfIsLoading: false, pdfUrl: `/api/pdf/${id}`, }) }) .catch((error) => { this.setState({ pdfIsLoading: false, pdfError: error.message, pdfUrl: null, }) }) .then(() => this._getLatest()) } _getLatest() { getLatest() .then((latest) => this.setState({ latest })) .catch((err) => console.error('Unable to get latest:', err)) } _onChange(name, event) { if (!name) { return } const value = event && event.target && event.target.value const options = Object.assign({}, this.state.options, { [name]: value || undefined }) this.setState({ options }) } } export default App