-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.tsx
116 lines (101 loc) · 2.82 KB
/
App.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import React, { useState, useEffect } from 'react'
import {
SafeAreaView,
StyleSheet,
View,
Button,
FlatList,
} from 'react-native'
import TaskItem from './src/components/TaskItem'
import AppTitle from './src/components/AppTitle'
import TaskInput from './src/components/TaskInput'
import firestore, { firebase } from '@react-native-firebase/firestore'
const App = () => {
const [listTask, setListTask] = useState([])
const checklist = firestore().collection("checklist")
const update = () => {
checklist.onSnapshot((querySnapshot) => {
let tasks = []
querySnapshot.forEach((documentSnapshot) => {
tasks.push(documentSnapshot.data())
// setListTask(currentList => [
// ...currentList, {
// id: documentSnapshot.id,
// value: documentSnapshot.data().value,
// description: documentSnapshot.data().description,
// complete: documentSnapshot.data().complete
// }
// ])
});
console.log("updated list: " + listTask);
setListTask(tasks)
tasks = []
})
}
const addTaskHandler = (taskName) => {
checklist.add({ complete: false, description: '', value: taskName })
.then(docRef => {
checklist.doc(docRef.id).set({
id: docRef.id,
complete: false,
description: '',
value: taskName
})
})
// setListTask(currentList => [
// ...currentList, {
// id: Math .random().toString(),
// value: taskName,
// description: '',
// complete: false
// }
// ])
}
const completedTaskHandler = (task) => {
checklist.doc(task.id)
.update({ complete: true })
}
const deleteTaskHandler = (taskId) => {
checklist.doc(taskId).delete()
}
const saveTaskDescriptionHandler = (task) => {
checklist.doc(task.id)
.update({ description: task.description })
}
const saveTaskTitleHandler = (task) => {
checklist.doc(task.id)
.update({ value: task.value })
}
return (
<SafeAreaView>
<View style={styles.mainContainer}>
<AppTitle/>
<TaskInput onAddTask={addTaskHandler}/>
<FlatList
data={listTask}
renderItem={itemData =>
<TaskItem
itemData={itemData}
onComplete={completedTaskHandler}
onDelete={deleteTaskHandler}
onSaveDescription={saveTaskDescriptionHandler}
onEditTaskTitle={saveTaskTitleHandler}
/>
}
keyExtractor={(item) => item.id}
/>
<Button
title='Load'
onPress={update}
/>
</View>
</SafeAreaView>
);
};
const styles = StyleSheet.create({
mainContainer: {
marginTop: 10,
paddingHorizontal: 24,
},
});
export default App;