import * as React from 'react'; import {EncryptStorage} from 'storage-encryption'; import {Button, Stack, TextField} from "@mui/material"; import MDEditor from '@uiw/react-md-editor'; let encryptStorage = new EncryptStorage('test'); // TODO la clef doit venir de l'utilisateur export default function PageForm({setListPages, csrf, url, passphrase}) { const isPassphraseSet = passphrase !== null; const onSubmit = async (event: React.FormEvent) => { event.preventDefault(); encryptStorage = new EncryptStorage(passphrase); let HTMLForm : HTMLFormElement = event.currentTarget; let decryptedFormData = new FormData(HTMLForm); let encryptedFormData = new FormData(); for (let [key, value] of decryptedFormData.entries()) { encryptStorage.encrypt('uuid'+key, value); let newEncryptedString = localStorage.getItem('uuid'+key); if (newEncryptedString) { encryptedFormData.append(key, newEncryptedString); } } encryptedFormData.append('_token', csrf); let response = await fetch(url, { method: 'POST', body: encryptedFormData }); const json = await response.json(); const uuid = json.uuid; for (let key of decryptedFormData.keys()) { let newEncryptedString = localStorage.getItem('uuid'+key); localStorage.setItem(uuid+key, ""+newEncryptedString); localStorage.removeItem("uuid"+key); } if (json.success) { HTMLForm.reset(); setListPages(previousList => [ ...previousList, { id: uuid, date: json.date, title: decryptedFormData.get("title"), content: decryptedFormData.get("text"), }]); } } if (isPassphraseSet) { return ( /* */