import React, { useState, useEffect } from 'react' import LetterOptions from './LetterOptions' import Button from './Button' import Preview from './Preview' import LatestList from './LatestList' import { generatePdf } from './apiHelper' import { addDocument, removeDocument, getDocuments } from '../lib/dataStore' import { getDocuments as getLatestDocuments } from '../lib/dataStore' import { IStoreItem } from '../interfaces/IStoreItem' import { IDocProps } from '../interfaces/IDocProps' export default function App() { const [options, setOptions] = useState({ address: 'Max Mustermann\nMusterstrasse\n12345 Musterstadt', body: 'Inhalt des Briefs', closing: 'Mit freundlichen Grüßen', customer: '', date: new Date().toLocaleDateString('de-DE'), enclosing: '', invoice: '', myRef: '', opening: 'Sehr geehrte Damen und Herren', ps: '', signature: '', specialMail: '', subject: 'Betreffzeile', letterOption: 'brief-fam', yourMail: '', yourRef: '', yourRefName: '', }) const [storeData, setStoreData] = useState([]) const [pdfUrl, setPdfUrl] = useState(null) const [pdfIsLoading, setPdfIsLoading] = useState(false) const [pdfError, setPdfError] = useState(null) useEffect(() => { setStoreData(getDocuments()) }, [pdfUrl]) const _onChange = (name: string, event: React.ChangeEvent<{ value: string }>) => { if (!name) { return } const value = event && event.target && event.target.value setOptions({ ...options, [name]: value }) } const _onSelectLatest = (selectedOption: IStoreItem) => { setOptions({ ...selectedOption }) } const _onRemoveLatest = async (item: IStoreItem) => { removeDocument(item.id) setStoreData(getLatestDocuments()) } const _onClear = () => { window.location.reload() } const _onGenerate = async () => { setPdfIsLoading(true) setPdfError(null) try { const { url, data } = await generatePdf(options) addDocument(data) setPdfIsLoading(false) setPdfUrl(url) } catch (error) { setPdfIsLoading(false) setPdfError(error.message) setPdfUrl(null) } } return (
) }