Мне удалось заставить это работать в моем приложении, используя метод, подобный тому, который был найден в GitHib repo
Мой код вызывает функцию loadMessages в componentDidMount, которая использует onSnapshot для сохраненияотслеживать любые изменения в моих коллекциях сообщений или чатов. Если происходит изменение, он использует функцию обратного вызова для добавления новых сообщений в GiftedChat.
Вот мой код:
async componentDidMount() {
this.loadMessages(message => {
this.setState(previousState => {
return {
messages: GiftedChat.append(previousState.messages, message)
};
});
});
}
async loadMessages(callback) {
var that = this;
var recipientId = this.props.navigation.getParam("recipientId");
var chatId = this.generateChatID(recipientId);
this.setState({ chatId });
firebase
.firestore()
.collection("Message")
.doc(chatId)
.collection("Chats")
.orderBy("createdAt", "asc")
.onSnapshot(function(doc) {
doc.docChanges().forEach(chat => {
var id = chat.doc.id;
chat = chat.doc.data();
const newMessage = {
_id: id,
text: chat.text,
createdAt: chat.createdAt.toDate(),
user: {
_id: chat.user._id,
name: chat.user.name,
avatar: chat.avatar
}
};
callback(newMessage);
});
});
}
Lmk, если у вас есть какие-либо вопросы!