import { defaultStyles } from '@/constants/defaultStyles'; import { supabase } from '@/lib/supabase'; import { router, Stack, useFocusEffect, useLocalSearchParams } from 'expo-router'; import { useCallback, useState } from 'react'; import { ActivityIndicator, Alert, Button, Keyboard, KeyboardAvoidingView, Platform, Pressable, Text, TextInput, TouchableWithoutFeedback, View } from 'react-native'; export default function EditTask() { const [title, SetTitle] = useState(''); const [description, SetDescription] = useState(''); const [isCompleted, SetIsCompleted] = useState(false); const [deadline, SetDeadline] = useState(''); const [isSaving, SetIsSaving] = useState(false); const { tId } = useLocalSearchParams(); useFocusEffect( useCallback(() => { const GetTask = async () => { if (!tId) return; const { data, error } = await supabase.from("tasks").select("*").eq("tId", tId).single(); if (error) { Alert.alert("Task not found"); return; } if (data) { SetTitle(data.title); SetDescription(data.description); SetIsCompleted(data.isCompleted); SetDeadline(data.deadline); } } GetTask(); }, [tId]) ); const EditTask = async () => { if(title.trim() === '' || description.trim() === '' || deadline.trim() === '') { Alert.alert("All fields are required!"); return; } const { data, error: userError } = await supabase.auth.getUser(); if(userError || !data.user) { router.replace("../createUser"); return; } SetIsSaving(true); const { error: dbError } = await supabase.from("tasks").update({ title, description, isCompleted, lastChanged: new Date().toISOString(), deadline, uId: data.user.id, }).eq("tId", tId); if (dbError) { Alert.alert("Task could not be edited, please try again"); return; } Alert.alert("Task successfully edited!"); SetTitle(''); SetDescription(''); SetIsCompleted(false); SetDeadline(''); SetIsSaving(false); router.back(); } return ( <> Edit Task SetIsCompleted(state => !state)} style={defaultStyles.checkboxContainer} > {isCompleted && } {isCompleted ? 'Completed' : 'Not completed'}