Now in my application one to one chat is working but, i want to add group chat functionality using firebase.
Asked
Active
Viewed 1,072 times
1 Answers
1
first, you need to create a chat room in firebase
const [roomName, setRoomName] = useState('');
const createRoom = () => {
if (roomName.length > 0) {
firestore()
.collection('THREADS')
.add({
name: roomName,
latestMessage: {
text: `You have joined the room ${roomName}.`,
createdAt: new Date().getTime(),
},
})
.then(docRef => {
docRef.collection('MESSAGES').add({
text: `You have joined the room ${roomName}.`,
createdAt: new Date().getTime(),
system: true,
});
});
}};
then, you can get messages from the room using thread id
const [messages, setMessages] = useState([]);
const {thread} = route.params;
useEffect(() => {
const messagesListener = firestore()
.collection('THREADS')
.doc(thread._id)
.collection('MESSAGES')
.orderBy('createdAt', 'desc')
.onSnapshot(querySnapshot => {
const messages = querySnapshot.docs.map(doc => {
const firebaseData = doc.data();
const data = {
_id: doc.id,
text: '',
createdAt: new Date().getTime(),
...firebaseData,
};
if (!firebaseData.system) {
data.user = {
...firebaseData.user,
name: firebaseData.user.email,
};
}
return data;
});
setMessages(messages);
});
return () => messagesListener();
}, []);

Naseef m
- 21
- 2