IMConversationItemCell.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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 unreadNumberLabel: UILabel!
  17. @IBOutlet weak var emojiImg: UIImageView!
  18. override func awakeFromNib() {
  19. super.awakeFromNib()
  20. }
  21. override func setSelected(_ selected: Bool, animated: Bool) {
  22. super.setSelected(selected, animated: animated)
  23. }
  24. func setInstantContent(item: InstantMessage) {
  25. self.avatarImg.image = UIImage(named: "icon_email")
  26. self.nameLabel.text = "通知消息"
  27. self.messageLabel.isHidden = false
  28. self.messageLabel.text = item.title
  29. if let time = item.createTime {
  30. let date = time.toDate(formatter: "yyyy-MM-dd HH:mm:ss")
  31. self.timeLabel.text = date.friendlyTime()
  32. }
  33. self.emojiImg.isHidden = true
  34. self.unreadNumberLabel.isHidden = true
  35. }
  36. func bindConversation(conversation: IMConversationInfo) {
  37. //avatar name
  38. if conversation.type == o2_im_conversation_type_single {
  39. var person = ""
  40. conversation.personList?.forEach({ (p) in
  41. if p != O2AuthSDK.shared.myInfo()?.distinguishedName {
  42. person = p
  43. }
  44. })
  45. if person != "" {
  46. //头像
  47. let urlstr = AppDelegate.o2Collect.generateURLWithAppContextKey(ContactContext.contactsContextKeyV2, query: ContactContext.personIconByNameQueryV2, parameter: ["##name##":person as AnyObject], generateTime: false)
  48. DDLogDebug("头像url \(String(describing: urlstr))")
  49. if let u = URL(string: urlstr!) {
  50. self.avatarImg.hnk_setImageFromURL(u)
  51. }else {
  52. DDLogError("错误, 没有生成头像url")
  53. self.avatarImg.image = UIImage(named: "icon_men")
  54. }
  55. //姓名
  56. self.nameLabel.text = person.split("@").first ?? ""
  57. }else {
  58. self.avatarImg.image = UIImage(named: "icon_men")
  59. self.nameLabel.text = ""
  60. }
  61. }else {//todo 群组头像 ?
  62. self.nameLabel.text = conversation.title
  63. self.avatarImg.image = UIImage(named: "group_default")
  64. }
  65. //time
  66. if let time = conversation.lastMessage?.createTime {
  67. DDLogDebug("time: \(time)")
  68. let date = time.toDate(formatter: "yyyy-MM-dd HH:mm:ss")
  69. DDLogDebug("date \(date.description)")
  70. self.timeLabel.text = date.friendlyTime()
  71. }
  72. // message
  73. if let msgBody = conversation.lastMessage?.body, let body = parseJson(msg: msgBody) {
  74. if body.type == o2_im_msg_type_text {
  75. self.messageLabel.text = body.body
  76. self.messageLabel.isHidden = false
  77. self.emojiImg.isHidden = true
  78. }else if body.type == o2_im_msg_type_emoji {
  79. self.messageLabel.isHidden = true
  80. self.emojiImg.isHidden = false
  81. let bundle = Bundle().o2EmojiBundle(anyClass: IMConversationItemCell.self)
  82. let path = o2ImEmojiPath(emojiBody: body.body!)
  83. self.emojiImg.image = UIImage(named: path, in: bundle, compatibleWith: nil)
  84. }else {
  85. self.messageLabel.isHidden = true
  86. self.emojiImg.isHidden = true
  87. }
  88. }
  89. //unread number
  90. let number = conversation.unreadNumber ?? 0
  91. if number > 0 && number < 100 {
  92. self.unreadNumberLabel.text = "\(number)"
  93. self.unreadNumberLabel.isHidden = false
  94. }else if number >= 100 {
  95. self.unreadNumberLabel.text = "99.."
  96. self.unreadNumberLabel.isHidden = false
  97. }else {
  98. self.unreadNumberLabel.isHidden = true
  99. }
  100. }
  101. private func parseJson(msg: String) -> IMMessageBodyInfo? {
  102. return IMMessageBodyInfo.deserialize(from: msg)
  103. }
  104. }