-
Notifications
You must be signed in to change notification settings - Fork 0
/
add.js
96 lines (92 loc) · 2.44 KB
/
add.js
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
import React, { Component } from 'react';
import { StyleSheet, ScrollView, ActivityIndicator, View, TextInput } from 'react-native';
import { Button } from 'react-native-elements';
import firebase from '../Firebase';
class AddBoardScreen extends Component {
static navigationOptions = {
title: 'Add Board',
};
constructor() {
super();
this.ref = firebase.firestore().collection('boards');
this.state = {
title: '',
description: '',
author: '',
isLoading: false,
};
}
updateTextInput = (text, field) => {
const state = this.state
state[field] = text;
this.setState(state);
}
saveBoard() {
this.setState({
isLoading: true,
});
this.ref.add({
title: this.state.title,
description: this.state.description,
author: this.state.author,
}).then((docRef) => {
this.setState({
title: '',
description: '',
author: '',
isLoading: false,
});
this.props.navigation.goBack();
})
.catch((error) => {
console.error("Error adding document: ", error);
this.setState({
isLoading: false,
});
});
}
render() {
if(this.state.isLoading){
return(
<View style={styles.activity}>
<ActivityIndicator size="large" color="#0000ff"/>
</View>
)
}
return (
<ScrollView style={styles.container}>
<View style={styles.subContainer}>
<TextInput
placeholder={'Title'}
value={this.state.title}
onChangeText={(text) => this.updateTextInput(text, 'title')}
/>
</View>
<View style={styles.subContainer}>
<TextInput
multiline={true}
numberOfLines={4}
placeholder={'Description'}
value={this.state.description}
onChangeText={(text) => this.updateTextInput(text, 'description')}
/>
</View>
<View style={styles.subContainer}>
<TextInput
placeholder={'Author'}
value={this.state.author}
onChangeText={(text) => this.updateTextInput(text, 'author')}
/>
</View>
<View style={styles.button}>
<Button
large
leftIcon={{name: 'save'}}
title='Save'
onPress={() => this.saveBoard()} />
</View>
</ScrollView>
);
}
}
export default AddBoardScreen;