diff options
Diffstat (limited to 'helpers.jsx')
-rw-r--r-- | helpers.jsx | 99 |
1 files changed, 97 insertions, 2 deletions
diff --git a/helpers.jsx b/helpers.jsx index cf95ac2..427158d 100644 --- a/helpers.jsx +++ b/helpers.jsx @@ -1,9 +1,34 @@ +import AsyncStorage from '@react-native-async-storage/async-storage' import { Alert } from 'react-native'; +import { login, getNote, editNote, createNote, removeNote } from './api' + +export const handleLogin = async ({ email, password, setSession, showError }) => { + try { + const response = await login({ email, password }) + const cookies = response.headers?.map?.['set-cookie'] + const data = await response.json() + if (data?.isLoggedIn) { + await AsyncStorage.setItem('session', JSON.stringify({ ...data, cookies })) + setSession({ ...data, cookies }) + } + } catch(e) { + showError('Error while logging in') + } +} + +export const handleLogout = ({ session, setSession, showError }) => { + const logout = async () => { + try { + await AsyncStorage.clear(); + setSession(null) + } catch(e) { + showError('Error while logging out') + } + } -export const confirmLogout = ({ logout, email }) => { Alert.alert( 'Are you sure?', - `Do you want to log out user ${email}?`, + `Do you want to log out user ${session.email}?`, [ { text: 'Logout', @@ -18,3 +43,73 @@ export const confirmLogout = ({ logout, email }) => { ], ); } + +export const handleGetNote = async ({ note, setContent, setEdit, session, showError }) => { + try { + const response = await getNote({ note, session }) + const { content } = await response.json() + setContent(content) + } catch(e) { + showError('Error while fetching note') + setEdit(null) + } +} + +export const handleEditNote = async ({ note, title, content, setSaving, setEdit, session, showError }) => { + try { + setSaving(true) + await editNote({ note, title, content, session }) + setSaving(false) + setEdit(null) + } catch(e) { + showError('Error while saving note') + setSaving(false) + setEdit(null) + } +} + +export const handleCreateNote = async ({ title, content, setSaving, setEdit, session, showError }) => { + try { + setSaving(true) + await createNote({ title, content, session }) + setSaving(false) + setEdit(null) + } catch(e) { + showError('Error while saving note') + setSaving(false) + setEdit(null) + } +} + +export const handleRemove = ({ note, session, fetchNotes, setLoading, showError }) => { + const deleteNote = async () => { + setLoading(true) + try { + await removeNote({ note, session }) + fetchNotes() + } catch(e) { + console.log(e) + showError('Error while removing note') + setLoading(false) + } + } + + Alert.alert( + 'Are you sure?', + `Note "${note.title}" will be permanently removed`, + [ + { + text: 'Remove', + onPress: deleteNote, + style: 'destructive', + }, + { + text: 'Cancel', + onPress: () => {}, + style: 'cancel', + }, + ], + ); +}; + + |