diff --git a/App.js b/App.js index 99f5729ea73051786f5f0ee75b4fb644529ddefc..3df11add71ac3ef9dd916899ec9294418329873d 100644 --- a/App.js +++ b/App.js @@ -1,26 +1,61 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { View, TextInput, Button, FlatList, Text, StyleSheet, TouchableOpacity } from 'react-native'; +import { db } from './firebaseConfig'; +import { collection, addDoc, getDocs, updateDoc, doc, deleteDoc } from 'firebase/firestore'; + export default function App() { const [task, setTask] = useState(''); const [tasks, setTasks] = useState([]); const [editingId, setEditingId] = useState(null); - const addOrUpdateTask = () => { + useEffect(() => { + fetchTasks(); + }, []); + + + const fetchTasks = async () => { + try { + const querySnapshot = await getDocs(collection(db, 'tasks')); + const loadedTasks = querySnapshot.docs.map(doc => ({ + id: doc.id, + text: doc.data().text + })); + setTasks(loadedTasks); + console.log("Tasks loaded:", loadedTasks.length); + } catch (error) { + console.error("Error fetching tasks:", error); + } + }; + + + const addOrUpdateTask = async () => { if (task.trim()) { - if (editingId) { - // Update mode - setTasks(tasks.map(t => t.id === editingId ? { ...t, text: task } : t)); - setEditingId(null); - } else { - // Add mode - setTasks([...tasks, { id: Date.now().toString(), text: task }]); + try { + if (editingId) { + // Update mode + const taskRef = doc(db, 'tasks', editingId); + await updateDoc(taskRef, { text: task }); + console.log("Task updated:", editingId); + setEditingId(null); + } else { + // Add mode + const docRef = await addDoc(collection(db, 'tasks'), { text: task }); + console.log("Task added with ID:", docRef.id); + } + + await fetchTasks(); // always refetch + setTask(''); + } catch (error) { + console.error("Error adding/updating task:", error); } - setTask(''); } }; + + - const removeTask = (id) => { + const removeTask = async (id) => { + await deleteDoc(doc(db, 'tasks', id)); setTasks(tasks.filter((t) => t.id !== id)); if (editingId === id) { setTask(''); diff --git a/firebaseConfig.js b/firebaseConfig.js new file mode 100644 index 0000000000000000000000000000000000000000..81c9f9bfcbf2f9a4c7c21f8e042a3bcbda8f7bdd --- /dev/null +++ b/firebaseConfig.js @@ -0,0 +1,19 @@ +// firebaseConfig.js +import { initializeApp } from 'firebase/app'; +import { getFirestore } from 'firebase/firestore'; + +const firebaseConfig = { + apiKey: "AIzaSyBhYbz1Gb2nGdgOxZwcbSbxDUSVFD-bYhw", + authDomain: "expotodoapp-692af.firebaseapp.com", + projectId: "expotodoapp-692af", + storageBucket: "expotodoapp-692af.firebasestorage.app", + messagingSenderId: "948893841016", + appId: "1:948893841016:web:e91f5ddbd2c0121e839f8d", + measurementId: "G-4V1EBCR32D" +}; + +// Initialize Firebase app +const app = initializeApp(firebaseConfig); + +// Export Firestore instance +export const db = getFirestore(app);