Commit e53aaad6c57191e3be443678bd3a0e75f7ce4917
Merge branch 'master' of http://bj.gitlab.cnlive.com/ios-team/CNLiveMateCode
Showing
16 changed files
with
205 additions
and
41 deletions
metaCode/Classes/Config/CNLiveConfigUserInfo.swift
| @@ -182,7 +182,7 @@ class StandSortManager: NSObject { | @@ -182,7 +182,7 @@ class StandSortManager: NSObject { | ||
| 182 | static let shared = StandSortManager() | 182 | static let shared = StandSortManager() |
| 183 | 183 | ||
| 184 | //根据用户信息设置key | 184 | //根据用户信息设置key |
| 185 | - static let sort_key: String = "mateCode_stand_sort_key_"+UserInfoManager.shared.userInfo.uid | 185 | +// static let sort_key: String = "mateCode_stand_sort_key_"+UserInfoManager.shared.userInfo.uid |
| 186 | fileprivate var _indexs : Array<String>? | 186 | fileprivate var _indexs : Array<String>? |
| 187 | private(set) var indexs: Array<String> { | 187 | private(set) var indexs: Array<String> { |
| 188 | set { | 188 | set { |
| @@ -194,6 +194,10 @@ class StandSortManager: NSObject { | @@ -194,6 +194,10 @@ class StandSortManager: NSObject { | ||
| 194 | } | 194 | } |
| 195 | } | 195 | } |
| 196 | 196 | ||
| 197 | + static var sort_key: String { | ||
| 198 | + return "mateCode_stand_sort_key_"+UserInfoManager.shared.userInfo.uid | ||
| 199 | + } | ||
| 200 | + | ||
| 197 | /// 存储排序信息 | 201 | /// 存储排序信息 |
| 198 | /// - Parameter indexs: 排序的index | 202 | /// - Parameter indexs: 排序的index |
| 199 | static private func cacheStandSort(indexs: NSArray) { | 203 | static private func cacheStandSort(indexs: NSArray) { |
metaCode/Classes/Main/MinePage/View/CNLiveMineBodyListView.swift
| @@ -603,7 +603,7 @@ class MineBodyFourViewCell: UITableViewCell { | @@ -603,7 +603,7 @@ class MineBodyFourViewCell: UITableViewCell { | ||
| 603 | nameLabel.text = listModel.title ?? "" | 603 | nameLabel.text = listModel.title ?? "" |
| 604 | descLabel.text = "积分值+\(listModel.score ?? "")" | 604 | descLabel.text = "积分值+\(listModel.score ?? "")" |
| 605 | if _listModel.taskId!.contains("check_in") { | 605 | if _listModel.taskId!.contains("check_in") { |
| 606 | - if _listModel.status!.contains("true") { | 606 | + if !_listModel.checkInStatus! { |
| 607 | shareBtn.setTitle("去签到", for: .normal) | 607 | shareBtn.setTitle("去签到", for: .normal) |
| 608 | }else{ | 608 | }else{ |
| 609 | shareBtn.titleEdgeInsets = UIEdgeInsets.zero | 609 | shareBtn.titleEdgeInsets = UIEdgeInsets.zero |
metaCode/Classes/Main/MinePage/ViewModel/CNLiveMineBaseModel.swift
| @@ -322,6 +322,9 @@ class MineTaskCheckListModel: BaseModel { | @@ -322,6 +322,9 @@ class MineTaskCheckListModel: BaseModel { | ||
| 322 | var title: String? = "" | 322 | var title: String? = "" |
| 323 | var totalCount: String? = "" | 323 | var totalCount: String? = "" |
| 324 | var url: String? = "" | 324 | var url: String? = "" |
| 325 | + | ||
| 326 | + /**最外面的参数 表示是不是进行过签到**/ | ||
| 327 | + var checkInStatus: Bool? = false | ||
| 325 | } | 328 | } |
| 326 | // !!!: /Daren/transaction/getTransactionRecord.action 余额交易记录 | 329 | // !!!: /Daren/transaction/getTransactionRecord.action 余额交易记录 |
| 327 | 330 |
metaCode/Classes/Main/MinePage/ViewModel/CNLiveMineViewModel.swift
| @@ -714,6 +714,7 @@ class CNLiveMineViewModel: NSObject { | @@ -714,6 +714,7 @@ class CNLiveMineViewModel: NSObject { | ||
| 714 | for item in array { | 714 | for item in array { |
| 715 | let listModel = dictionaryToModel(item as! [String : Any], MineTaskCheckListModel.self,"") as! MineTaskCheckListModel | 715 | let listModel = dictionaryToModel(item as! [String : Any], MineTaskCheckListModel.self,"") as! MineTaskCheckListModel |
| 716 | if listModel.taskId!.contains("check_in") { | 716 | if listModel.taskId!.contains("check_in") { |
| 717 | + listModel.checkInStatus = dict["checkInStatus"] as? Bool | ||
| 717 | tempArray.add(listModel) | 718 | tempArray.add(listModel) |
| 718 | } | 719 | } |
| 719 | } | 720 | } |
metaCode/Classes/Main/VideoPage/Model/CNLiveShortVideoHomeModel.swift
| @@ -21,6 +21,7 @@ class ShortVideoHomeCommentListModel: BaseModel { | @@ -21,6 +21,7 @@ class ShortVideoHomeCommentListModel: BaseModel { | ||
| 21 | var replyData = ShortVideoHomeCommentRListModel() | 21 | var replyData = ShortVideoHomeCommentRListModel() |
| 22 | 22 | ||
| 23 | var cell_h: CGFloat! = 0.0 | 23 | var cell_h: CGFloat! = 0.0 |
| 24 | + var tableView_top: CGFloat! = 0.0 | ||
| 24 | var tableView_h: CGFloat! = 0.0 | 25 | var tableView_h: CGFloat! = 0.0 |
| 25 | override func didFinishMapping() { | 26 | override func didFinishMapping() { |
| 26 | super.didFinishMapping() | 27 | super.didFinishMapping() |
| @@ -30,7 +31,9 @@ class ShortVideoHomeCommentListModel: BaseModel { | @@ -30,7 +31,9 @@ class ShortVideoHomeCommentListModel: BaseModel { | ||
| 30 | for replyModel in replyData.replys { | 31 | for replyModel in replyData.replys { |
| 31 | tableView_h += replyModel.cellH | 32 | tableView_h += replyModel.cellH |
| 32 | } | 33 | } |
| 33 | - if replyData.total_hd ?? 0 > 2 { | 34 | + if replyData.replyCount ?? 0 > 2 { |
| 35 | + print("回复数=>\(replyData.replyCount ?? 0)") | ||
| 36 | + tableView_top += 30.0 | ||
| 34 | cell_h += 30 | 37 | cell_h += 30 |
| 35 | } | 38 | } |
| 36 | cell_h += tableView_h | 39 | cell_h += tableView_h |
| @@ -80,7 +83,7 @@ class ShortVideoHomeCommentFListModel: BaseModel { | @@ -80,7 +83,7 @@ class ShortVideoHomeCommentFListModel: BaseModel { | ||
| 80 | } | 83 | } |
| 81 | //回复数据 | 84 | //回复数据 |
| 82 | class ShortVideoHomeCommentRListModel: BaseModel { | 85 | class ShortVideoHomeCommentRListModel: BaseModel { |
| 83 | - var total_hd: Int? = 0 //总数 | 86 | + var replyCount: Int? = 0 //总数 |
| 84 | var replys = [ShortVideoHomeCommentRListItemModel]() | 87 | var replys = [ShortVideoHomeCommentRListItemModel]() |
| 85 | 88 | ||
| 86 | } | 89 | } |
| @@ -110,7 +113,7 @@ class ShortVideoHomeCommentRListItemModel: BaseModel { | @@ -110,7 +113,7 @@ class ShortVideoHomeCommentRListItemModel: BaseModel { | ||
| 110 | override func didFinishMapping() { | 113 | override func didFinishMapping() { |
| 111 | super.didFinishMapping() | 114 | super.didFinishMapping() |
| 112 | 115 | ||
| 113 | - let modifier = CNLiveShortVideoMateCodeLinePositionModifier(font: semibold_adapt_font(pointSize: 14), paddingTop: 0, paddingBottom: 0, lineHeightMultiple: 1.5) | 116 | + let modifier = CNLiveShortVideoMateCodeLinePositionModifier(font: medium_adapt_font(pointSize: 16), paddingTop: 0, paddingBottom: 0, lineHeightMultiple: 1.5) |
| 114 | let comment = NSMutableAttributedString.init(string: self.content ?? "") | 117 | let comment = NSMutableAttributedString.init(string: self.content ?? "") |
| 115 | // let comment = CNLiveBusinessTools.replaceQQemoji(withCustomText: self.content ?? "") | 118 | // let comment = CNLiveBusinessTools.replaceQQemoji(withCustomText: self.content ?? "") |
| 116 | let temp_string = CNLiveShortVideoMateCodeLinePositionModifier.replaceEmotions(textAttributedString: comment, mainString: self.content ?? "") | 119 | let temp_string = CNLiveShortVideoMateCodeLinePositionModifier.replaceEmotions(textAttributedString: comment, mainString: self.content ?? "") |
| @@ -190,7 +193,7 @@ class CNLiveShortVideoMateCodeLinePositionModifier: NSObject, YYTextLinePosition | @@ -190,7 +193,7 @@ class CNLiveShortVideoMateCodeLinePositionModifier: NSObject, YYTextLinePosition | ||
| 190 | 193 | ||
| 191 | for j in 0..<emojiArr.count { | 194 | for j in 0..<emojiArr.count { |
| 192 | if mainString.substring(with: Range(result.range, in: mainString)!) == emojiArr[j].displayName { | 195 | if mainString.substring(with: Range(result.range, in: mainString)!) == emojiArr[j].displayName { |
| 193 | - let attachText = NSAttributedString.yy_attachmentString(withContent: emojiArr[j].image, contentMode: .scaleAspectFit, attachmentSize: CGSize(width: adapt_length(length: 18), height: adapt_length(length: 18)), alignTo: semibold_adapt_font(pointSize: 16), alignment: .center) | 196 | + let attachText = NSAttributedString.yy_attachmentString(withContent: emojiArr[j].image, contentMode: .scaleAspectFit, attachmentSize: CGSize(width: adapt_length(length: 25), height: adapt_length(length: 25)), alignTo: semibold_adapt_font(pointSize: 16), alignment: .center) |
| 194 | 197 | ||
| 195 | textAttributedString.replaceCharacters(in: result.range, with: attachText) | 198 | textAttributedString.replaceCharacters(in: result.range, with: attachText) |
| 196 | } | 199 | } |
metaCode/Classes/Main/VideoPage/View/CNLiveShortVideoCommentListView.swift
| @@ -17,6 +17,8 @@ typealias CloseCommentListResultBlock = (_ commentModel: Any) ->Void | @@ -17,6 +17,8 @@ typealias CloseCommentListResultBlock = (_ commentModel: Any) ->Void | ||
| 17 | typealias ReloadCommentListResultBlock = (_ commentModel: Any) ->Void | 17 | typealias ReloadCommentListResultBlock = (_ commentModel: Any) ->Void |
| 18 | typealias ChangeCommentListResultBlock = (_ commentModel: Any) ->Void | 18 | typealias ChangeCommentListResultBlock = (_ commentModel: Any) ->Void |
| 19 | typealias DeleteCommentListResultBlock = (_ commentModel: Any) ->Void | 19 | typealias DeleteCommentListResultBlock = (_ commentModel: Any) ->Void |
| 20 | +typealias ReloadItemCommentListResultBlock = (_ commentModel: Any) ->Void | ||
| 21 | +typealias ReloadRowCommentListResultBlock = (_ viewCell: CNLiveShortVideoCommentListTableViewCell, _ cell_h: CGFloat) ->Void | ||
| 20 | class CNLiveShortVideoCommentListView: UIView, UITableViewDelegate, UITableViewDataSource, EmptyDataSetSource, EmptyDataSetDelegate { | 22 | class CNLiveShortVideoCommentListView: UIView, UITableViewDelegate, UITableViewDataSource, EmptyDataSetSource, EmptyDataSetDelegate { |
| 21 | 23 | ||
| 22 | lazy var grayMaskView: UIView = { | 24 | lazy var grayMaskView: UIView = { |
| @@ -272,9 +274,22 @@ extension CNLiveShortVideoCommentListView { | @@ -272,9 +274,22 @@ extension CNLiveShortVideoCommentListView { | ||
| 272 | guard let cell = tableView.dequeueReusableCell(withIdentifier: kShortVideoCommentListTableViewCellIdentifier) as? CNLiveShortVideoCommentListTableViewCell else { | 274 | guard let cell = tableView.dequeueReusableCell(withIdentifier: kShortVideoCommentListTableViewCellIdentifier) as? CNLiveShortVideoCommentListTableViewCell else { |
| 273 | return CNLiveShortVideoCommentListTableViewCell() | 275 | return CNLiveShortVideoCommentListTableViewCell() |
| 274 | } | 276 | } |
| 275 | - cell.setupWithDataSource(commentData: (dataArray[indexPath.row] as! ShortVideoHomeCommentListModel).comment, replyData: (dataArray[indexPath.row] as! ShortVideoHomeCommentListModel).replyData, tableView_h: (dataArray[indexPath.row] as! ShortVideoHomeCommentListModel).tableView_h) | 277 | + cell.setupWithDataSource(commentData: (dataArray[indexPath.row] as! ShortVideoHomeCommentListModel).comment, replyData: (dataArray[indexPath.row] as! ShortVideoHomeCommentListModel).replyData, tableView_h: (dataArray[indexPath.row] as! ShortVideoHomeCommentListModel).tableView_h, tableView_top: (dataArray[indexPath.row] as! ShortVideoHomeCommentListModel).tableView_top, indexPath: indexPath, pageNumber: self.pageNum) |
| 278 | + cell.reloadRowBlock = {[weak self] viewCell, cell_h in | ||
| 279 | + guard let self = self else { return } | ||
| 280 | + let commentModel_temp = self.dataArray[viewCell.indexPath_current.row] as! ShortVideoHomeCommentListModel | ||
| 281 | + commentModel_temp.cell_h += cell_h | ||
| 282 | + commentModel_temp.cell_h -= 30 | ||
| 283 | + commentModel_temp.tableView_h += cell_h | ||
| 284 | + commentModel_temp.tableView_top = 0.0 | ||
| 285 | + commentModel_temp.replyData.replys = viewCell.dataSource as! [ShortVideoHomeCommentRListItemModel] | ||
| 286 | + self.tableView.beginUpdates() | ||
| 287 | + self.tableView.reloadRows(at: [viewCell.indexPath_current], with: .automatic) | ||
| 288 | + self.tableView.endUpdates() | ||
| 289 | + } | ||
| 276 | cell.reloadBlcok = {[weak self] commentModel in | 290 | cell.reloadBlcok = {[weak self] commentModel in |
| 277 | guard let self = self else { return } | 291 | guard let self = self else { return } |
| 292 | + showMessage(message: "") | ||
| 278 | self.tableView.mj_header?.beginRefreshing() | 293 | self.tableView.mj_header?.beginRefreshing() |
| 279 | } | 294 | } |
| 280 | cell.changeBlock = {[weak self] commentModel in | 295 | cell.changeBlock = {[weak self] commentModel in |
| @@ -283,9 +298,8 @@ extension CNLiveShortVideoCommentListView { | @@ -283,9 +298,8 @@ extension CNLiveShortVideoCommentListView { | ||
| 283 | } | 298 | } |
| 284 | cell.deleteBlock = {[weak self] commentModel in | 299 | cell.deleteBlock = {[weak self] commentModel in |
| 285 | guard let self = self else { return } | 300 | guard let self = self else { return } |
| 286 | - self.pageNum = 0 | ||
| 287 | - showLoading(message: "") | ||
| 288 | - self.requestDataSource() | 301 | + showMessage(message: "") |
| 302 | + self.tableView.mj_header?.beginRefreshing() | ||
| 289 | // let tempArray = NSMutableArray(array: self.dataArray) | 303 | // let tempArray = NSMutableArray(array: self.dataArray) |
| 290 | // let tempModel = commentModel as! ShortVideoHomeCommentFListModel | 304 | // let tempModel = commentModel as! ShortVideoHomeCommentFListModel |
| 291 | // tempArray.forEach { itemModel in | 305 | // tempArray.forEach { itemModel in |
| @@ -311,10 +325,6 @@ extension CNLiveShortVideoCommentListView { | @@ -311,10 +325,6 @@ extension CNLiveShortVideoCommentListView { | ||
| 311 | let model: ShortVideoHomeCommentListModel = dataArray[indexPath.row] as! ShortVideoHomeCommentListModel | 325 | let model: ShortVideoHomeCommentListModel = dataArray[indexPath.row] as! ShortVideoHomeCommentListModel |
| 312 | return model.cell_h | 326 | return model.cell_h |
| 313 | } | 327 | } |
| 314 | -// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | ||
| 315 | -// let model: ShortVideoHomeCommentFListModel = ((dataArray[indexPath.row] as! ShortVideoHomeCommentListModel).comment) | ||
| 316 | -// self.resultBlock(model) | ||
| 317 | -// } | ||
| 318 | func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? { | 328 | func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? { |
| 319 | return UIImage(named: "short_video_comment_empty") | 329 | return UIImage(named: "short_video_comment_empty") |
| 320 | } | 330 | } |
| @@ -392,6 +402,22 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | @@ -392,6 +402,22 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | ||
| 392 | return replyButton | 402 | return replyButton |
| 393 | }() | 403 | }() |
| 394 | 404 | ||
| 405 | + lazy var replyUnfoldButton: UIButton = { | ||
| 406 | + let button = QMUIButton() | ||
| 407 | + button.imagePosition = .right | ||
| 408 | + button.spacingBetweenImageAndTitle = 3 | ||
| 409 | + button.backgroundColor = .clear | ||
| 410 | + button.isHidden = true | ||
| 411 | + button.setTitle(" ── 展开回复", for: .normal) | ||
| 412 | + button.setTitleColor(HexColor("#969696"), for: .normal) | ||
| 413 | + button.titleLabel?.font = regular_adapt_font(pointSize: 13) | ||
| 414 | + button.imageView?.contentMode = .scaleAspectFit | ||
| 415 | + button.setImage(UIImage(named: "short_video_reply_open"), for: .normal) | ||
| 416 | + button.setImage(UIImage(named: "short_video_reply_close"), for: .selected) | ||
| 417 | + button.addTarget(self, action: #selector(replyUnfoldMethod), for: .touchUpInside) | ||
| 418 | + return button | ||
| 419 | + }() | ||
| 420 | + | ||
| 395 | lazy var likeButton: QMUIButton = { | 421 | lazy var likeButton: QMUIButton = { |
| 396 | let button = QMUIButton() | 422 | let button = QMUIButton() |
| 397 | button.imagePosition = .left | 423 | button.imagePosition = .left |
| @@ -417,18 +443,27 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | @@ -417,18 +443,27 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | ||
| 417 | tableView.tableFooterView = UIView.init() | 443 | tableView.tableFooterView = UIView.init() |
| 418 | tableView.separatorStyle = .none | 444 | tableView.separatorStyle = .none |
| 419 | tableView.scrollsToTop = false | 445 | tableView.scrollsToTop = false |
| 446 | + tableView.translatesAutoresizingMaskIntoConstraints = false | ||
| 420 | tableView.register(CNLiveShortVideoCommentListTableViewCell.self, forCellReuseIdentifier: kShortVideoReplyListTableViewCellIdentifier) | 447 | tableView.register(CNLiveShortVideoCommentListTableViewCell.self, forCellReuseIdentifier: kShortVideoReplyListTableViewCellIdentifier) |
| 421 | return tableView | 448 | return tableView |
| 422 | }() | 449 | }() |
| 423 | 450 | ||
| 451 | + lazy var dataSource: NSMutableArray = { | ||
| 452 | + let array = NSMutableArray() | ||
| 453 | + return array | ||
| 454 | + }() | ||
| 455 | + | ||
| 424 | var videoId: String! | 456 | var videoId: String! |
| 425 | var contentSid: String! | 457 | var contentSid: String! |
| 458 | + var tableView_height: CGFloat! = 0.0 | ||
| 459 | + var indexPath_current: IndexPath! | ||
| 426 | var changeBlock: ChangeCommentListResultBlock! | 460 | var changeBlock: ChangeCommentListResultBlock! |
| 427 | var deleteBlock: DeleteCommentListResultBlock! | 461 | var deleteBlock: DeleteCommentListResultBlock! |
| 428 | var reloadBlcok: ReloadCommentListResultBlock! | 462 | var reloadBlcok: ReloadCommentListResultBlock! |
| 429 | var deleteItemBlock: DeleteCommentListResultBlock! | 463 | var deleteItemBlock: DeleteCommentListResultBlock! |
| 430 | var commentModel: ShortVideoHomeCommentFListModel! | 464 | var commentModel: ShortVideoHomeCommentFListModel! |
| 431 | - var replyModel: ShortVideoHomeCommentRListModel! | 465 | + var reloadRowBlock: ReloadRowCommentListResultBlock! |
| 466 | + var reloadItemBlock: ReloadItemCommentListResultBlock! | ||
| 432 | var replyItemModel: ShortVideoHomeCommentRListItemModel! | 467 | var replyItemModel: ShortVideoHomeCommentRListItemModel! |
| 433 | 468 | ||
| 434 | override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { | 469 | override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { |
| @@ -482,11 +517,22 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | @@ -482,11 +517,22 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | ||
| 482 | make.width.equalTo(40) | 517 | make.width.equalTo(40) |
| 483 | make.top.equalTo(commentLabel.snp.bottom).offset(10) | 518 | make.top.equalTo(commentLabel.snp.bottom).offset(10) |
| 484 | } | 519 | } |
| 520 | + contentView.addSubview(replyUnfoldButton) | ||
| 521 | + replyUnfoldButton.snp.makeConstraints { make in | ||
| 522 | + make.top.equalTo(timeLabel.snp.bottom).offset(5) | ||
| 523 | + make.left.equalTo(titleLabel.snp.left) | ||
| 524 | + make.height.equalTo(20) | ||
| 525 | + } | ||
| 485 | contentView.addSubview(tableView) | 526 | contentView.addSubview(tableView) |
| 486 | } | 527 | } |
| 487 | 528 | ||
| 488 | - func setupWithDataSource(commentData: ShortVideoHomeCommentFListModel, replyData: ShortVideoHomeCommentRListModel, tableView_h: CGFloat) { | ||
| 489 | - replyModel = replyData | 529 | + func setupWithDataSource(commentData: ShortVideoHomeCommentFListModel, replyData: ShortVideoHomeCommentRListModel, tableView_h: CGFloat, tableView_top: CGFloat, indexPath: IndexPath, pageNumber: Int) { |
| 530 | + if pageNumber == 0 { | ||
| 531 | + dataSource.removeAllObjects() | ||
| 532 | + } | ||
| 533 | + dataSource.addObjects(from: replyData.replys) | ||
| 534 | + tableView_height = tableView_h | ||
| 535 | + indexPath_current = indexPath | ||
| 490 | commentModel = commentData | 536 | commentModel = commentData |
| 491 | iconView.kf.indicatorType = .activity | 537 | iconView.kf.indicatorType = .activity |
| 492 | iconView.kf.setImage(with: URL(string: commentData.icon!), placeholder: UIImage(named: "short_video_default")) | 538 | iconView.kf.setImage(with: URL(string: commentData.icon!), placeholder: UIImage(named: "short_video_default")) |
| @@ -495,6 +541,12 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | @@ -495,6 +541,12 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | ||
| 495 | likeButton.setTitle("\(commentData.praiseCount ?? 0)", for: .normal) | 541 | likeButton.setTitle("\(commentData.praiseCount ?? 0)", for: .normal) |
| 496 | timeLabel.text = commentData.created_at | 542 | timeLabel.text = commentData.created_at |
| 497 | owerView.isHidden = !(contentSid == commentData.uid) | 543 | owerView.isHidden = !(contentSid == commentData.uid) |
| 544 | + if tableView_top > 0.0 { | ||
| 545 | + replyUnfoldButton.isHidden = replyData.replyCount! <= 2 | ||
| 546 | + replyUnfoldButton.setTitle(" ── 展开\(replyData.replyCount! - 2)条回复", for: .normal) | ||
| 547 | + } else { | ||
| 548 | + replyUnfoldButton.isHidden = true | ||
| 549 | + } | ||
| 498 | if ((contentSid == UserInfoManager.shared.userInfo.uid) || (commentData.uid == UserInfoManager.shared.userInfo.uid)) { | 550 | if ((contentSid == UserInfoManager.shared.userInfo.uid) || (commentData.uid == UserInfoManager.shared.userInfo.uid)) { |
| 499 | replyButton.setTitle("删除", for: .normal) | 551 | replyButton.setTitle("删除", for: .normal) |
| 500 | } else { | 552 | } else { |
| @@ -510,20 +562,22 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | @@ -510,20 +562,22 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | ||
| 510 | make.height.equalTo(commentData.textLayout.textBoundingRect.size.height) | 562 | make.height.equalTo(commentData.textLayout.textBoundingRect.size.height) |
| 511 | } | 563 | } |
| 512 | self.tableView.removeFromSuperview() | 564 | self.tableView.removeFromSuperview() |
| 513 | - if replyData.replys.count > 0 { | 565 | + if replyData.replyCount ?? 0 > 2 { |
| 514 | self.contentView.addSubview(self.tableView) | 566 | self.contentView.addSubview(self.tableView) |
| 515 | self.tableView.snp.makeConstraints { make in | 567 | self.tableView.snp.makeConstraints { make in |
| 516 | make.left.equalToSuperview().offset(60) | 568 | make.left.equalToSuperview().offset(60) |
| 517 | make.right.equalToSuperview().offset(-10) | 569 | make.right.equalToSuperview().offset(-10) |
| 518 | - make.top.equalTo(self.timeLabel.snp.bottom).offset(10) | ||
| 519 | - make.height.equalTo(tableView_h) | 570 | + make.top.equalTo(self.timeLabel.snp.bottom).offset(10+tableView_top) |
| 571 | + make.height.equalTo(self.tableView_height) | ||
| 520 | } | 572 | } |
| 573 | + self.tableView.reloadData() | ||
| 521 | } | 574 | } |
| 522 | } | 575 | } |
| 523 | } | 576 | } |
| 524 | 577 | ||
| 525 | - func setupWithReplyModel(replyModel: ShortVideoHomeCommentRListItemModel) { | 578 | + func setupWithReplyModel(commentData: ShortVideoHomeCommentFListModel,replyModel: ShortVideoHomeCommentRListItemModel) { |
| 526 | replyItemModel = replyModel | 579 | replyItemModel = replyModel |
| 580 | + commentModel = commentData | ||
| 527 | iconView.kf.indicatorType = .activity | 581 | iconView.kf.indicatorType = .activity |
| 528 | iconView.kf.setImage(with: URL(string: replyModel.fromFace!), placeholder: UIImage(named: "short_video_default")) | 582 | iconView.kf.setImage(with: URL(string: replyModel.fromFace!), placeholder: UIImage(named: "short_video_default")) |
| 529 | titleLabel.text = replyModel.fromNick | 583 | titleLabel.text = replyModel.fromNick |
| @@ -551,11 +605,15 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | @@ -551,11 +605,15 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | ||
| 551 | if button.titleLabel?.text == "回复" { | 605 | if button.titleLabel?.text == "回复" { |
| 552 | CNLiveContentToolTextView.showCommentViewForCustom(withCommType: .reply, fromNick: commentModel == nil ? replyItemModel.fromNick : commentModel.nick, firstRespFace: false, successBlcok: {[weak self] commentString, toolbarView in | 606 | CNLiveContentToolTextView.showCommentViewForCustom(withCommType: .reply, fromNick: commentModel == nil ? replyItemModel.fromNick : commentModel.nick, firstRespFace: false, successBlcok: {[weak self] commentString, toolbarView in |
| 553 | guard let self = self else { return } | 607 | guard let self = self else { return } |
| 554 | - CNLiveShortVideoViewModel.requestCommentWithReply(commentId: self.commentModel.commentId!, comment: commentString ?? "", toSid: commentModel.uid!, fromSid: UserInfoManager.shared.userInfo.uid, level: "1") {[weak self] result, respStatue in | 608 | + CNLiveShortVideoViewModel.requestCommentWithReply(commentId: self.commentModel.commentId!, comment: commentString ?? "", toSid: self.commentModel.uid!, fromSid: UserInfoManager.shared.userInfo.uid, level: "1") {[weak self] result, respStatue in |
| 555 | guard let self = self else { return } | 609 | guard let self = self else { return } |
| 556 | if respStatue == .success { | 610 | if respStatue == .success { |
| 557 | showMessage(message: result as! String) | 611 | showMessage(message: result as! String) |
| 558 | - self.reloadBlcok(self.commentModel == nil ? replyItemModel! : commentModel!) | 612 | + if self.replyItemModel != nil { |
| 613 | + self.reloadItemBlock(self.commentModel == nil ? replyItemModel! : commentModel!) | ||
| 614 | + } else { | ||
| 615 | + self.reloadBlcok(self.commentModel == nil ? replyItemModel! : commentModel!) | ||
| 616 | + } | ||
| 559 | } | 617 | } |
| 560 | } | 618 | } |
| 561 | }, dissBlock: { toolbarView in}) | 619 | }, dissBlock: { toolbarView in}) |
| @@ -564,21 +622,20 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | @@ -564,21 +622,20 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | ||
| 564 | AlertTool.systemAlert(title: "确认删除该条\(commentModel != nil ? "评论" : "回复")吗?", message: "", cancelTitle: "取消", confirmTitle: "确定") {[weak self] index in | 622 | AlertTool.systemAlert(title: "确认删除该条\(commentModel != nil ? "评论" : "回复")吗?", message: "", cancelTitle: "取消", confirmTitle: "确定") {[weak self] index in |
| 565 | guard let self = self else { return } | 623 | guard let self = self else { return } |
| 566 | if index == 1 { | 624 | if index == 1 { |
| 567 | - if commentModel != nil { | 625 | + if replyItemModel != nil { |
| 568 | showLoading(message: "") | 626 | showLoading(message: "") |
| 569 | - CNLiveShortVideoViewModel.requestCommentDelete(videoId: commentModel.topicId!, commentId: commentModel.commentId!) {[weak self] result, respStatue in | 627 | + CNLiveShortVideoViewModel.requestCommentReplyDelete(replyId: replyItemModel.replyId!, commentId: replyItemModel.commentId!) {[weak self] result, respStatue in |
| 570 | guard let self = self else { return } | 628 | guard let self = self else { return } |
| 571 | if respStatue == .success { | 629 | if respStatue == .success { |
| 572 | - self.deleteBlock(self.commentModel!) | 630 | + self.deleteItemBlock(self.replyItemModel!) |
| 573 | } | 631 | } |
| 574 | } | 632 | } |
| 575 | - } | ||
| 576 | - if replyItemModel != nil { | 633 | + } else { |
| 577 | showLoading(message: "") | 634 | showLoading(message: "") |
| 578 | - CNLiveShortVideoViewModel.requestCommentReplyDelete(replyId: replyItemModel.replyId!, commentId: replyItemModel.commentId!) {[weak self] result, respStatue in | 635 | + CNLiveShortVideoViewModel.requestCommentDelete(videoId: commentModel.topicId!, commentId: commentModel.commentId!) {[weak self] result, respStatue in |
| 579 | guard let self = self else { return } | 636 | guard let self = self else { return } |
| 580 | if respStatue == .success { | 637 | if respStatue == .success { |
| 581 | - self.deleteItemBlock(self.replyItemModel!) | 638 | + self.deleteBlock(self.commentModel!) |
| 582 | } | 639 | } |
| 583 | } | 640 | } |
| 584 | } | 641 | } |
| @@ -636,6 +693,26 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | @@ -636,6 +693,26 @@ class CNLiveShortVideoCommentListTableViewCell: UITableViewCell , UITableViewDel | ||
| 636 | } | 693 | } |
| 637 | } | 694 | } |
| 638 | 695 | ||
| 696 | + @objc func replyUnfoldMethod(button: UIButton) { | ||
| 697 | + showLoading(message: "") | ||
| 698 | + let replyModel: ShortVideoHomeCommentRListItemModel = self.dataSource.lastObject as! ShortVideoHomeCommentRListItemModel | ||
| 699 | + CNLiveShortVideoViewModel.requestcommentWithReplyList(commentId: commentModel.commentId!, seqId: replyModel.seqId!) {[weak self] result, respStatue in | ||
| 700 | + guard let self = self else { return } | ||
| 701 | + if respStatue == .success { | ||
| 702 | + let tempArray = result as! [ShortVideoHomeCommentRListItemModel] | ||
| 703 | + let dataArray_temp = NSMutableArray(array: self.dataSource) | ||
| 704 | + self.dataSource.removeAllObjects() | ||
| 705 | + var cell_h: CGFloat = 0.0 | ||
| 706 | + tempArray.forEach { item in | ||
| 707 | + dataArray_temp.add(item) | ||
| 708 | + cell_h += item.cellH | ||
| 709 | + } | ||
| 710 | + self.dataSource.addObjects(from: dataArray_temp as! [ShortVideoHomeCommentRListItemModel]) | ||
| 711 | + self.reloadRowBlock(self, cell_h) | ||
| 712 | + } | ||
| 713 | + } | ||
| 714 | + } | ||
| 715 | + | ||
| 639 | required init?(coder: NSCoder) { | 716 | required init?(coder: NSCoder) { |
| 640 | fatalError("init(coder:) has not been implemented") | 717 | fatalError("init(coder:) has not been implemented") |
| 641 | } | 718 | } |
| @@ -647,13 +724,17 @@ extension CNLiveShortVideoCommentListTableViewCell { | @@ -647,13 +724,17 @@ extension CNLiveShortVideoCommentListTableViewCell { | ||
| 647 | return 1 | 724 | return 1 |
| 648 | } | 725 | } |
| 649 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | 726 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { |
| 650 | - return replyModel == nil ? 0 : replyModel.replys.count | 727 | + return dataSource.count |
| 651 | } | 728 | } |
| 652 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | 729 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
| 653 | guard let cell = tableView.dequeueReusableCell(withIdentifier: kShortVideoReplyListTableViewCellIdentifier) as? CNLiveShortVideoCommentListTableViewCell else { | 730 | guard let cell = tableView.dequeueReusableCell(withIdentifier: kShortVideoReplyListTableViewCellIdentifier) as? CNLiveShortVideoCommentListTableViewCell else { |
| 654 | return CNLiveShortVideoCommentListTableViewCell() | 731 | return CNLiveShortVideoCommentListTableViewCell() |
| 655 | } | 732 | } |
| 656 | - cell.setupWithReplyModel(replyModel: replyModel.replys[indexPath.row]) | 733 | + cell.setupWithReplyModel(commentData: commentModel,replyModel: dataSource[indexPath.row] as! ShortVideoHomeCommentRListItemModel) |
| 734 | + cell.reloadItemBlock = {[weak self] commentModel in | ||
| 735 | + guard let self = self else { return } | ||
| 736 | + self.reloadBlcok(commentModel) | ||
| 737 | + } | ||
| 657 | cell.deleteItemBlock = {[weak self] commentModel in | 738 | cell.deleteItemBlock = {[weak self] commentModel in |
| 658 | guard let self = self else { return } | 739 | guard let self = self else { return } |
| 659 | self.deleteBlock(commentModel) | 740 | self.deleteBlock(commentModel) |
| @@ -677,7 +758,7 @@ extension CNLiveShortVideoCommentListTableViewCell { | @@ -677,7 +758,7 @@ extension CNLiveShortVideoCommentListTableViewCell { | ||
| 677 | return cell | 758 | return cell |
| 678 | } | 759 | } |
| 679 | func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | 760 | func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { |
| 680 | - let model: ShortVideoHomeCommentRListItemModel = replyModel.replys[indexPath.row] | 761 | + let model: ShortVideoHomeCommentRListItemModel = dataSource[indexPath.row] as! ShortVideoHomeCommentRListItemModel |
| 681 | return model.cellH | 762 | return model.cellH |
| 682 | } | 763 | } |
| 683 | } | 764 | } |
metaCode/Classes/Main/VideoPage/ViewModel/CNLiveShortVideoViewModel.swift
| @@ -374,10 +374,13 @@ class CNLiveShortVideoViewModel: NSObject { | @@ -374,10 +374,13 @@ class CNLiveShortVideoViewModel: NSObject { | ||
| 374 | /// - commentId: 评论 id | 374 | /// - commentId: 评论 id |
| 375 | /// - page: 页数 | 375 | /// - page: 页数 |
| 376 | /// - reultShortVideoBlock: 返回 | 376 | /// - reultShortVideoBlock: 返回 |
| 377 | - static func requestcommentWithReplyList(commentId: String,page: NSInteger,reultShortVideoBlock: @escaping resultShortVideoBlock) { | 377 | + static func requestcommentWithReplyList(commentId: String,seqId: Int,reultShortVideoBlock: @escaping resultShortVideoBlock) { |
| 378 | let param = NSMutableDictionary() | 378 | let param = NSMutableDictionary() |
| 379 | param.setValue(commentId, forKey: "commentId") | 379 | param.setValue(commentId, forKey: "commentId") |
| 380 | - param.setValue("\(page)", forKey: "seqId")//从 0 开始 | 380 | + param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "sid") |
| 381 | + param.setValue(CNLiveEnvironmentManager.shared.appId, forKey: "appId") | ||
| 382 | + param.setValue("i", forKey: "plat") | ||
| 383 | + param.setValue("\(seqId)", forKey: "seqId")//从 时间戳 开始 | ||
| 381 | param.setValue("10", forKey: "count") | 384 | param.setValue("10", forKey: "count") |
| 382 | let custom_param = NSMutableDictionary() | 385 | let custom_param = NSMutableDictionary() |
| 383 | custom_param.setValue(CNLiveEnvironmentManager.shared.appId, forKey: "appId") | 386 | custom_param.setValue(CNLiveEnvironmentManager.shared.appId, forKey: "appId") |
| @@ -396,13 +399,16 @@ class CNLiveShortVideoViewModel: NSObject { | @@ -396,13 +399,16 @@ class CNLiveShortVideoViewModel: NSObject { | ||
| 396 | } else { | 399 | } else { |
| 397 | let resp_dict = resp["data"] as! NSDictionary | 400 | let resp_dict = resp["data"] as! NSDictionary |
| 398 | let resp_reply_dict = resp_dict["replyData"] as! NSDictionary | 401 | let resp_reply_dict = resp_dict["replyData"] as! NSDictionary |
| 399 | - let array = resp_reply_dict["replys"] as! NSArray | ||
| 400 | - let tempArray = NSMutableArray() | ||
| 401 | - for item in array { | ||
| 402 | - let listModel = dictionaryToModel(item as! [String : Any], ShortVideoHomeCommentRListItemModel.self,"") as! ShortVideoHomeCommentRListItemModel | ||
| 403 | - tempArray.add(listModel) | 402 | + if resp_reply_dict["replys"] != nil { |
| 403 | + let array = resp_reply_dict["replys"] as! NSArray | ||
| 404 | + let tempArray = NSMutableArray() | ||
| 405 | + for item in array { | ||
| 406 | + let listModel = dictionaryToModel(item as! [String : Any], ShortVideoHomeCommentRListItemModel.self,"") as! ShortVideoHomeCommentRListItemModel | ||
| 407 | + tempArray.add(listModel) | ||
| 408 | + } | ||
| 409 | + reultShortVideoBlock(tempArray, .success) | ||
| 404 | } | 410 | } |
| 405 | - reultShortVideoBlock(tempArray, .success) | 411 | + reultShortVideoBlock(Array<Any>(), .success) |
| 406 | } | 412 | } |
| 407 | } else { | 413 | } else { |
| 408 | showMessage(message: resp["errorMessage"] as! String) | 414 | showMessage(message: resp["errorMessage"] as! String) |
metaCode/Supporting Files/Assets.xcassets/Video/short_video_reply_close.imageset/Contents.json
0 → 100644
| 1 | +{ | ||
| 2 | + "images" : [ | ||
| 3 | + { | ||
| 4 | + "idiom" : "universal", | ||
| 5 | + "scale" : "1x" | ||
| 6 | + }, | ||
| 7 | + { | ||
| 8 | + "filename" : "short_video_close@2x.png", | ||
| 9 | + "idiom" : "universal", | ||
| 10 | + "scale" : "2x" | ||
| 11 | + }, | ||
| 12 | + { | ||
| 13 | + "filename" : "short_video_close@3x.png", | ||
| 14 | + "idiom" : "universal", | ||
| 15 | + "scale" : "3x" | ||
| 16 | + } | ||
| 17 | + ], | ||
| 18 | + "info" : { | ||
| 19 | + "author" : "xcode", | ||
| 20 | + "version" : 1 | ||
| 21 | + } | ||
| 22 | +} |
metaCode/Supporting Files/Assets.xcassets/Video/short_video_reply_close.imageset/short_video_close@2x.png
0 → 100644
240 Bytes
metaCode/Supporting Files/Assets.xcassets/Video/short_video_reply_close.imageset/short_video_close@3x.png
0 → 100644
451 Bytes
metaCode/Supporting Files/Assets.xcassets/Video/short_video_reply_name.imageset/Contents.json
0 → 100644
| 1 | +{ | ||
| 2 | + "images" : [ | ||
| 3 | + { | ||
| 4 | + "idiom" : "universal", | ||
| 5 | + "scale" : "1x" | ||
| 6 | + }, | ||
| 7 | + { | ||
| 8 | + "filename" : "short_video_reply_name@2x.png", | ||
| 9 | + "idiom" : "universal", | ||
| 10 | + "scale" : "2x" | ||
| 11 | + }, | ||
| 12 | + { | ||
| 13 | + "filename" : "short_video_reply_name@3x.png", | ||
| 14 | + "idiom" : "universal", | ||
| 15 | + "scale" : "3x" | ||
| 16 | + } | ||
| 17 | + ], | ||
| 18 | + "info" : { | ||
| 19 | + "author" : "xcode", | ||
| 20 | + "version" : 1 | ||
| 21 | + } | ||
| 22 | +} |
metaCode/Supporting Files/Assets.xcassets/Video/short_video_reply_name.imageset/short_video_reply_name@2x.png
0 → 100644
281 Bytes
metaCode/Supporting Files/Assets.xcassets/Video/short_video_reply_name.imageset/short_video_reply_name@3x.png
0 → 100644
453 Bytes
metaCode/Supporting Files/Assets.xcassets/Video/short_video_reply_open.imageset/Contents.json
0 → 100644
| 1 | +{ | ||
| 2 | + "images" : [ | ||
| 3 | + { | ||
| 4 | + "idiom" : "universal", | ||
| 5 | + "scale" : "1x" | ||
| 6 | + }, | ||
| 7 | + { | ||
| 8 | + "filename" : "short_video_open@2x.png", | ||
| 9 | + "idiom" : "universal", | ||
| 10 | + "scale" : "2x" | ||
| 11 | + }, | ||
| 12 | + { | ||
| 13 | + "filename" : "short_video_open@3x.png", | ||
| 14 | + "idiom" : "universal", | ||
| 15 | + "scale" : "3x" | ||
| 16 | + } | ||
| 17 | + ], | ||
| 18 | + "info" : { | ||
| 19 | + "author" : "xcode", | ||
| 20 | + "version" : 1 | ||
| 21 | + } | ||
| 22 | +} |
metaCode/Supporting Files/Assets.xcassets/Video/short_video_reply_open.imageset/short_video_open@2x.png
0 → 100644
234 Bytes
metaCode/Supporting Files/Assets.xcassets/Video/short_video_reply_open.imageset/short_video_open@3x.png
0 → 100644
450 Bytes