0

I'm incorporating MessageKit into my app, I've finally got messages to send and receive but unfortunately all messages appear on the same side.

I've printed the values of the array and it's showing the correct IDs. On the actual message screen the correct usernames are showing and when I show the IDs on the screen those are correct as well. Here is a screen shot and code samples below.

enter image description here

Here is where my currentSender is defined:

  func currentSender() -> SenderType {
    return Sender(senderId: user!["id"] as! String, displayName: user!["username"] as! String)

  }

Here is my MessagesDisplayDelegate

extension DirectMessageViewController: MessagesDisplayDelegate {

      func backgroundColor(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> UIColor {
      return isFromCurrentSender(message: message) ? colorBrandBlue : .incomingMessage
    }

    func shouldDisplayHeader(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> Bool {
      return false
    }

    func messageStyle(for message: MessageType, at indexPath: IndexPath, in  messagesCollectionView: MessagesCollectionView) -> MessageStyle {
        let corner: MessageStyle.TailCorner = isFromCurrentSender(message: message) ? .bottomRight : .bottomLeft
        let borderColor:UIColor = isFromCurrentSender(message: message) ? .black: .purple
        return .bubbleTailOutline(borderColor, corner, .curved)
    }
  }

func isFromCurrentSender(message: MessageType) -> Bool { 
    return message.sender.senderId == currentSender().senderId 
}
valosip
  • 3,167
  • 1
  • 14
  • 26
techgirl
  • 293
  • 1
  • 3
  • 18
  • Whats your logic for `isFromCurrentSender(...)` – valosip Mar 03 '20 at 05:07
  • Check your `messageDataSource` method `messageForItem(at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> MessageType` – Kishan Bhatiya Mar 03 '20 at 11:53
  • @KishanBhatiya my messageDataSource is identical to your comment, any other suggestions. – techgirl Mar 04 '20 at 01:32
  • @valosip my logic for isFromCurrentSender is func isFromCurrentSender(message: MessageType) -> Bool { return message.sender.senderId == currentSender().senderId } – techgirl Mar 04 '20 at 01:49
  • 1
    @techgirl I'd guess that the issue is between `func isFromCurrentSender()` and `func currentSender()`. Set some break points to read the senderId values and figure out why your `isFromCurrentSender()` is always failing. – valosip Mar 04 '20 at 06:03

0 Answers0