From d77d7c440333ded46eeb8d28e22ec5517f3b15b8 Mon Sep 17 00:00:00 2001 From: piotrruss Date: Wed, 18 May 2022 23:02:58 +0100 Subject: small fixes --- components/Edit.jsx | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 components/Edit.jsx (limited to 'components/Edit.jsx') diff --git a/components/Edit.jsx b/components/Edit.jsx new file mode 100644 index 0000000..d2ec6b3 --- /dev/null +++ b/components/Edit.jsx @@ -0,0 +1,127 @@ +import { StyleSheet, Text, TextInput , View } from 'react-native'; +import { useState, useEffect } from 'react' +import Menu from './Menu' + +const Edit = ({ edit, setEdit, session, setSession, showError }) => { + const [saving, setSaving] = useState() + const [title, setTitle] = useState(edit ? edit.title : '') + const [content, setContent] = useState() + + const fetchNote = async () => { + try { + const response = await fetch(`https://apps.pruss.it/api/notes/${edit.noteId}`, { + method: 'GET', headers: { 'Cookie': session.cookies }, + }) + const { content } = await response.json() + setContent(content) + } catch(e) { + showError('Error while fetching note') + setEdit(null) + } + } + + const saveNote = async () => { + try { + setSaving(true) + await fetch(`https://apps.pruss.it/api/notes/${edit._id}`, { + method: 'PUT', + headers: { 'Content-Type': 'plain/text; charset=utf-8', 'Cookie': session.cookies }, + body: JSON.stringify({ title, noteId: edit.noteId, content }) + }) + setSaving(false) + setEdit(null) + } catch(e) { + showError('Error while saving note') + setSaving(false) + setEdit(null) + } + } + + createNote = async () => { + try { + setSaving(true) + await fetch(`https://apps.pruss.it/api/notes`, { + method: 'POST', + headers: { 'Content-Type': 'plain/text; charset=utf-8', 'Cookie': session.cookies }, + body: JSON.stringify({ title, content }) + }) + setSaving(false) + setEdit(null) + } catch(e) { + showError('Error while saving note') + setSaving(false) + setEdit(null) + } + } + + useEffect(() => { + if (edit?._id) { + fetchNote() + } else { + setContent('') + } + }, []) + + return ( + <> + + { + content === undefined || saving + ? {saving ? 'Saving...' : 'Loading...'} + : ( + + setTitle(e.nativeEvent.text)} + /> + setContent(e.nativeEvent.text)} + /> + + ) + } + + ) +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + padding: 15, + marginBottom: 50, + }, + title: { + color: 'white', + borderBottomColor: 'white', + borderBottomWidth: 1, + paddingBottom: 15, + marginBottom: 10, + fontWeight: 'bold', + }, + content: { + color: 'white', + flexGrow: 1, + paddingVertical: 10, + }, + text: { + padding: 15, + color: 'white', + } +}); + +export default Edit -- cgit v1.2.3