Как использовать response-native-gifted-chat с облачным firestore? - PullRequest
0 голосов
/ 17 октября 2019

У меня проблема с реактивным чатом при использовании облачного пожарного магазина. Я не могу получить предыдущие сообщения и добавить в одаренный чат. Пожалуйста, покажите мне код, как он используется с облачным пожарным хранилищем. спасибо

1 Ответ

0 голосов
/ 11 ноября 2019

Мне удалось заставить это работать в моем приложении, используя метод, подобный тому, который был найден в 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, если у вас есть какие-либо вопросы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...