Commit bd833687 authored by Steven杜宇's avatar Steven杜宇

// 消息已读处理

parent e0010798
......@@ -12,6 +12,9 @@ class YHMessageDetailListVC: YHBaseViewController {
var type:Int = -1
var msgArr:[YHDetailMessageModel] = []
// 滑动过程中出现在屏幕上的未读消息集合
var visiblemsgIdSet = Set<String>()
var visibleMsgArr = [YHDetailMessageModel]()
lazy var viewModel = {
let model = YHMsgViewModel()
......@@ -118,7 +121,10 @@ class YHMessageDetailListVC: YHBaseViewController {
msgArr.removeAll()
msgArr.append(contentsOf: self.viewModel.msgDetailList)
emptyDataTipsView.isHidden = msgArr.count > 0
self.tableView.reloadData()
self.tableView.reloadData {
[weak self] in
self?.addUpAppearUnreadMessages()
}
}
}
......@@ -136,17 +142,50 @@ class YHMessageDetailListVC: YHBaseViewController {
self.tableView.reloadData()
return
}
var msg = "清除失败"
if let error = error {
var msg = "清除失败"
if error.errorMsg.count > 0 {
msg = error.errorMsg
}
YHHUD.flash(message: msg)
return
}
YHHUD.flash(message: msg)
}
}
func markAppearMessagsReaded() {
var msgIds:[Int] = []
var resultArr:[YHDetailMessageModel] = []
for msgItem in visibleMsgArr {
if let msgId = Int(msgItem.id), msgItem.isRead == false {
msgIds.append(msgId)
resultArr.append(msgItem)
}
}
if msgIds.count <= 0 { return }
YHHUD.show(.progress(message: "标记已读中..."))
self.viewModel.readMessages(type: self.type, msgIds: msgIds, isAllRead:false) {
[weak self] success, error in
YHHUD.hide()
guard let self = self else { return }
if success {
for msgItem in resultArr {
msgItem.isRead = true
}
self.tableView.reloadData()
return
}
var msg = "标记已读失败"
if let error = error {
if error.errorMsg.count > 0 {
msg = error.errorMsg
}
}
YHHUD.flash(message: msg)
}
}
}
extension YHMessageDetailListVC: UITableViewDelegate, UITableViewDataSource {
......@@ -187,5 +226,32 @@ extension YHMessageDetailListVC: UITableViewDelegate, UITableViewDataSource {
return UIView()
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if scrollView == tableView && !decelerate {
// 在这里处理滑动停止事件
print("TableView 滑动停止")
markAppearMessagsReaded()
}
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
addUpAppearUnreadMessages()
}
// 累计出现在屏幕上的未读消息集合
func addUpAppearUnreadMessages() {
guard let visibleIndexPaths = tableView.indexPathsForVisibleRows else { return }
for indexPath in visibleIndexPaths {
if 0 <= indexPath.row && indexPath.row < msgArr.count {
let msgItem = msgArr[indexPath.row]
if !msgItem.isRead {
if !visiblemsgIdSet.contains(msgItem.id) {
visiblemsgIdSet.insert(msgItem.id)
visibleMsgArr.append(msgItem)
}
}
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment