IMConversationItemCell.swift 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. //
  2. // IMConversationItemCell.swift
  3. // O2Platform
  4. //
  5. // Created by FancyLou on 2020/6/4.
  6. // Copyright © 2020 zoneland. All rights reserved.
  7. //
  8. import UIKit
  9. import O2OA_Auth_SDK
  10. import CocoaLumberjack
  11. class IMConversationItemCell: UITableViewCell {
  12. @IBOutlet weak var avatarImg: UIImageView!
  13. @IBOutlet weak var nameLabel: UILabel!
  14. @IBOutlet weak var timeLabel: UILabel!
  15. @IBOutlet weak var messageLabel: UILabel!
  16. @IBOutlet weak var emojiImg: UIImageView!
  17. override func awakeFromNib() {
  18. super.awakeFromNib()
  19. // Initialization code
  20. }
  21. override func setSelected(_ selected: Bool, animated: Bool) {
  22. super.setSelected(selected, animated: animated)
  23. // Configure the view for the selected state
  24. }
  25. func bindConversation(conversation: IMConversationInfo) {
  26. //avatar name
  27. if conversation.type == o2_im_conversation_type_single {
  28. var person = ""
  29. conversation.personList?.forEach({ (p) in
  30. if p != O2AuthSDK.shared.myInfo()?.distinguishedName {
  31. person = p
  32. }
  33. })
  34. if person != "" {
  35. //头像
  36. let urlstr = AppDelegate.o2Collect.generateURLWithAppContextKey(ContactContext.contactsContextKeyV2, query: ContactContext.personIconByNameQueryV2, parameter: ["##name##":person as AnyObject], generateTime: false)
  37. DDLogDebug("头像url \(String(describing: urlstr))")
  38. if let u = URL(string: urlstr!) {
  39. self.avatarImg.hnk_setImageFromURL(u)
  40. }else {
  41. DDLogError("错误, 没有生成头像url")
  42. self.avatarImg.image = UIImage(named: "icon_men")
  43. }
  44. //姓名
  45. self.nameLabel.text = person.split("@").first ?? ""
  46. }else {
  47. self.avatarImg.image = UIImage(named: "icon_men")
  48. self.nameLabel.text = ""
  49. }
  50. }else {//todo 群组头像 ?
  51. self.nameLabel.text = conversation.title
  52. }
  53. //time
  54. if let time = conversation.lastMessage?.createTime {
  55. DDLogDebug("time: \(time)")
  56. let date = time.toDate(formatter: "yyyy-MM-dd HH:mm:ss")
  57. DDLogDebug("date \(date.description)")
  58. self.timeLabel.text = date.friendlyTime()
  59. }
  60. // message
  61. if let msgBody = conversation.lastMessage?.body, let body = parseJson(msg: msgBody) {
  62. if body.type == o2_im_msg_type_text {
  63. self.messageLabel.text = body.body
  64. self.messageLabel.isHidden = false
  65. self.emojiImg.isHidden = true
  66. }else if body.type == o2_im_msg_type_emoji {
  67. self.messageLabel.isHidden = true
  68. self.emojiImg.isHidden = false
  69. // self.emojiImg.image = UIImage(named: "setting_myCRM")
  70. //todo emoji表情导入
  71. let bundle = Bundle().o2EmojiBundle(anyClass: IMConversationItemCell.self)
  72. let path = o2ImEmojiPath(emojiBody: body.body!)
  73. DDLogDebug("path: \(path)")
  74. self.emojiImg.image = UIImage(named: path, in: bundle, compatibleWith: nil)
  75. }else {
  76. self.messageLabel.isHidden = true
  77. self.emojiImg.isHidden = true
  78. }
  79. }
  80. }
  81. private func parseJson(msg: String) -> IMMessageBodyInfo? {
  82. return IMMessageBodyInfo.deserialize(from: msg)
  83. }
  84. }