Я пытаюсь создать функцию чата для своего приложения, используя базу данных React Native + Gifted Chat + expo + firebase в реальном времени. Я мог бы построить модуль до этой части. Я использую аутентификацию Firebase, и мне было интересно, как я могу связать эти чаты с учетными данными пользователя, отправляющего и получающего их - чтобы при входе в систему они могли видеть свои прошлые чаты и знать, кто их отправил. Сейчас это только односторонний чат, и я только что жестко запрограммировал одно сообщение и идентификатор электронной почты пользователя - но я хочу, чтобы он понравился:
пользователь 1 входит в систему - отправляет «Привет» пользователю 2
Пользователь 2 входит в систему и видит все прошлые сообщения с Пользователем 1 и новой частью «Привет».
Я добавил часть кода previousState для добавления старых сообщений, но это не происходит, поскольку я до сих пор не связывали текущего пользователя с чатами.
Есть идеи, как это сделать? Помощь будет ОЧЕНЬ благодарна!
![just one way chat as of now](https://i.stack.imgur.com/T54JD.jpg)
Я аутентифицируюсь с использованием аутентификации 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>)
}
}