Files
yingmeng-ios-switf/yinmeng-ios/Modules/Chat/View/ChatBaseCell.swift
2024-03-01 15:39:53 +08:00

93 lines
2.5 KiB
Swift

//
// ChatBaseCell.swift
// yinmeng-ios
//
// Created by MaiMang on 2024/2/27.
//
import UIKit
import Reusable
import NIMSDK
protocol ChatBaseCellProtocol: NSObjectProtocol {
func cell(_ cell: ChatBaseCell, didTapAvatarAt model: ChatBaseObject)
}
class ChatBaseCell: UITableViewCell, Reusable{
weak var delegate: ChatBaseCellProtocol?
var model:ChatSessionProtocol? {
didSet {
guard let model = model else {return}
if let sessionId = model.msg?.session?.sessionId {
let user = NIMSDK.shared().userManager.userInfo(sessionId)
if let url = user?.userInfo?.avatarUrl {
self.avatarImgView.kf.setImage(with: URL(string: url),
placeholder: UIImage(named: "public_avatar"))
} else {
}
}
layoutMessageCell()
}
}
///
open func layoutMessageCell() { }
///
open func activityStartAnimating() {
guard let sendType = model?.type, sendType.rawValue == 0 else {
return
}
guard let sendDate = model?.msg?.timestamp as? Int else {
return
}
let nowDate = Date.getNowTimeStamp()
if ((nowDate - sendDate) <= 1) {
self.activityIndicatorView.isHidden = false
self.activityIndicatorView.startAnimating()
DispatchQueue.main.asyncAfter(deadline: .now() + 1.25) {
self.activityIndicatorView.startAnimating()
self.activityIndicatorView.isHidden = true
}
}
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
selectionStyle = .none
backgroundColor = .clear
contentView.addSubview(avatarImgView)
contentView.addSubview(bubbleView)
contentView.addSubview(activityIndicatorView)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
lazy var avatarImgView: UIImageView = {
let imageView = UIImageView()
imageView.isUserInteractionEnabled = true
imageView.layer.masksToBounds = true
imageView.contentMode = .scaleAspectFill
imageView.layer.cornerRadius = ChatUIConfig.layout.avatarSize / 2.0
return imageView
}()
lazy var bubbleView: UIImageView = {
let imageView = UIImageView()
imageView.backgroundColor = .white
imageView.layer.masksToBounds = true
imageView.layer.cornerRadius = 8
return imageView
}()
lazy var activityIndicatorView: UIActivityIndicatorView = {
let activityView = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.medium)
activityView.backgroundColor = .clear
activityView.isHidden = true
return activityView
}()
}