Как я могу реализовать функцию двустороннего чата, используя одаренный чат и аутентификацию с помощью firebase? - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь создать функцию чата для своего приложения, используя базу данных React Native + Gifted Chat + expo + firebase в реальном времени. Я мог бы построить модуль до этой части. Я использую аутентификацию Firebase, и мне было интересно, как я могу связать эти чаты с учетными данными пользователя, отправляющего и получающего их - чтобы при входе в систему они могли видеть свои прошлые чаты и знать, кто их отправил. Сейчас это только односторонний чат, и я только что жестко запрограммировал одно сообщение и идентификатор электронной почты пользователя - но я хочу, чтобы он понравился:

пользователь 1 входит в систему - отправляет «Привет» пользователю 2

Пользователь 2 входит в систему и видит все прошлые сообщения с Пользователем 1 и новой частью «Привет».

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

Есть идеи, как это сделать? Помощь будет ОЧЕНЬ благодарна!

just one way chat as of now

Я аутентифицируюсь с использованием аутентификации Firebase:

  Login = (email, password) => {
    try {
      firebase
         .auth()
         .signInWithEmailAndPassword(email, password)
         .then(res => {
             console.log(res.user.email);
             this.props.navigation.navigate('MainMenu');
          })
} catch (error) {
      console.log(error.toString(error));
    }
  };

Код моего текущего чата выглядит следующим образом:

let saveMessage = message => {
  db.ref('/messages').push({
    messageText: message
  });
};  

class ChatPage extends React.Component {

    state = {[![right now its just one-way chat - and no saving od ][1]][1]
      messages: []
    };

    componentDidMount() {
      this.setState({
        messages: [ 
          {
            _id: 1,
            text: "Hi there, how are you doing ?",
            createdAt: new Date(),
            user: {  
              _id: 2,
              name: "user1@gmail.com",
              avatar: "https://placeimg.com/640/480/nature"
            }
          }
        ]
      });
    }

    onSend(messages = []) {
      this.setState(previousState => ({
        messages: GiftedChat.append(previousState.messages, messages),
      }))
      db.ref('/messages').push({ messages });
    }

    render() {
      return (<KeyboardAvoidingView
        style={{ flex: 1 }}
        behavior="padding"
        keyboardVerticalOffset={Platform.select({
          ios: () => 0,
          android: () => 100
        })()}
      ><GiftedChat 
      messages={this.state.messages}         
      onSend={messages => this.onSend(messages)}
      // user={{
      //   _id: 1,
      // }}
      user={this.state.email}
      renderUsernameOnMessage={true}

      /></KeyboardAvoidingView>)
    } 


  }

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