Сообщения отображаются только на одной стороне (левая сторона экрана) - response-native-gifted-chat - PullRequest
0 голосов
/ 22 января 2019

Если приложение использует 2 пользователя, сообщения отображаются в левой части экрана. не может различить их (отправитель, который отправил какие сообщения), это происходит только при использовании нашего собственного REST Api Call для загрузки,

enter image description here Но при отправке одного нового сообщения в это время сообщение будет отдельно отображать формат отправителя и получателя, и еще один сценарий, когда я использую метод getMessages по умолчанию twillio, в то время также не возникает ошибка.

Метод Twilio для получения предыдущих сообщений обоим пользователям:

this.channel.getMessages(0).then((messages) => {
    console.log("getMessages" + messages);
    this.handleBatch(messages);
});

enter image description here Пожалуйста, найдите скриншот выше для справки. Любой, кто знает, как решить эту проблему, или любые предложения приветствуются.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

попробуйте добавить пользователя, который пишет в giftedChat:

 <GiftedChat
    isAnimated
    messages={this.props.messages}
    onSend={messages => this.onSend(messages)}
    user={{
        _id: 'sarathy',
        name: 'Minecraft',
    }}
/>

Каждое сообщение, которое имеет _id: 'sarathy' пользователя, будет отображаться справа.

пример сообщения, которое будет отображаться справа:

{
  _id: 3,
  text: 'How r u?',
  createdAt: new Date(),
  user: {
    _id: 'sarathy',
    name: 'React Native'
  },
},
0 голосов
/ 24 января 2019

act-native-gifted-chat различает сообщения, используя реквизиты пользователя, которые указывают Пользователь, отправляющий сообщения, так что вы должны дать пользователю реквизит как

    <GiftedChat
                            messages={this.state.messages}
                            onSend={this.handleNewMessage.bind(this)}
                            user={{
                                _id: your user id
                                name: users name,
                                avatar: users image 
                            }} 
/>

имя и аватар полезно для отображения имени или изображения в одаренном чате, если вы хотите

и событие onSend отправляют этого пользователя с текстом в twillio как

handleNewMessage = (message = {}) => {

            this.channel.sendMessage( message[0].text, message[0].user)
            .catch(error => console.error(error));
    }

Теперь на вашем getMessages

this.channel.getMessages(0).then((messages) => {
    console.log("getMessages" + messages);
    this.handleBatch(messages);
});

перед добавлением одаренного чата измените формат сообщения, если хотите одаренного чата только для примера я использую состояние для установки сообщения

handleBatch= (message) => {
        const messageData = this.formatMessage(message);
        this.setState(previousState => ({
            messages: GiftedChat.append(previousState.messages, messageData),
        }));
    }



 formatMessage(message) {

            return {
                _id: message.sid, // or your own unique id
                text: message.body,
                user: message.attributes, // here you can get your user parameters in message attributes which we send to identify user
                createdAt: message.timestamp,
            };
        }

// change above conditions as you get response by twillio.

Я надеюсь, это поможет вам. если любой запрос, дайте мне знать.

...