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
|
import * as React from 'react';
import {Image, StyleSheet, TextInput, View} from 'react-native';
import AsyncStorage from '@react-native-community/async-storage';
import {AuthContext} from '../../routes';
import {TaggBigInput} from '../onboarding';
import {postMomentComment} from '../../services';
/**
* This file provides the add comment view for a user.
* Displays the logged in user's profile picture to the left and then provides space to add a comment.
* Comment is posted when enter is pressed as requested by product team.
*/
export interface AddCommentProps {
setNewCommentsAvailable: Function;
moment_id: string;
}
const AddComment: React.FC<AddCommentProps> = ({
setNewCommentsAvailable,
moment_id,
}) => {
const [comment, setComment] = React.useState('');
const {
avatar,
user: {userId, username},
logout,
} = React.useContext(AuthContext);
const handleCommentUpdate = (comment: string) => {
setComment(comment);
};
const postComment = async () => {
try {
const token = await AsyncStorage.getItem('token');
if (!token) {
logout();
return;
}
const postedComment = await postMomentComment(
userId,
comment,
moment_id,
token,
);
if (postedComment) {
//Set the current comment to en empty string if the comment was posted successfully.
handleCommentUpdate('');
//Indicate the MomentCommentsScreen that it needs to download the new comments again
setNewCommentsAvailable(true);
}
} catch (err) {
console.log('Error while posting comment!');
}
};
return (
<View style={styles.container}>
<Image
style={styles.avatar}
source={
avatar
? {uri: avatar}
: require('../../assets/images/avatar-placeholder.png')
}
/>
<TaggBigInput
style={styles.text}
multiline
placeholder="Add a comment....."
placeholderTextColor="gray"
onChangeText={handleCommentUpdate}
onSubmitEditing={postComment}
value={comment}
/>
</View>
);
};
const styles = StyleSheet.create({
container: {flexDirection: 'row'},
text: {
position: 'relative',
right: '18%',
backgroundColor: 'white',
width: '70%',
paddingLeft: '2%',
paddingRight: '2%',
paddingBottom: '1%',
paddingTop: '1%',
height: 60,
},
avatar: {
height: 40,
width: 40,
borderRadius: 30,
marginRight: 15,
},
});
export default AddComment;
|