Commit f547837b by pierce

fixed bugs

parent c71c6e1a
Showing with 201 additions and 123 deletions
......@@ -146,6 +146,7 @@ public class GDURLVideoPlayView: BaseView {
}
public func play() {
try? AVAudioSession.sharedInstance().setCategory(.playback)
engine.play()
}
......
......@@ -56,6 +56,7 @@ class GDSingleChatMessageModel: GDSingleChatMessageImageModel {
private lazy var statusDisposeBag = DisposeBag()
private lazy var imageDownloadDisposeBag = DisposeBag()
let messageId: NSString
let type: GDChatMessageType
let timeStamp: Int64
let status = BehaviorRelay<EMMessageStatus>(value: EMMessageStatusPending)
......@@ -82,6 +83,8 @@ class GDSingleChatMessageModel: GDSingleChatMessageImageModel {
self.timeStamp = Int64(Date().milliStamp.intValue)
self.message = message
self.messageId = "\(self.timeStamp)" as NSString
super.init()
}
......@@ -108,10 +111,17 @@ class GDSingleChatMessageModel: GDSingleChatMessageImageModel {
}
self.message = message
self.userInfo = GDRouter.Friend?.friendModel(for: message.conversationId)
self.timeStamp = message.timestamp
if let messageId = message.messageId as? NSString {
self.messageId = messageId
} else {
self.messageId = "\(self.timeStamp)" as NSString
}
super.init()
self.status.accept(message.status)
......@@ -178,6 +188,7 @@ class GDSingleChatMessageModel: GDSingleChatMessageImageModel {
self.timeStamp = time
self.message = message
self.messageId = "\(time)" as NSString
super.init()
......@@ -195,6 +206,7 @@ class GDSingleChatMessageModel: GDSingleChatMessageImageModel {
self.timeStamp = time
self.message = message ?? EMMessage()
self.messageId = "\(time)" as NSString
super.init()
......@@ -243,6 +255,42 @@ class GDSingleChatMessageModel: GDSingleChatMessageImageModel {
}
func updateWithModel(_ model:GDSingleChatMessageModel) {
if self.message.body.type != model.message.body.type
|| self.message.messageId != model.message.messageId {
return
}
self.message = model.message
self.status.accept(model.message.status)
// 未成功的消息需要监听
if model.message.status != EMMessageStatusSucceed {
GDIMCenter.shared.messageStatusChange.subscribe(onNext: {[weak self] message in
guard let self = self else { return }
if message.messageId == self.message.messageId {
self.message.status = message.status
self.status.accept(message.status)
if message.status == EMMessageStatusSucceed {
self.statusDisposeBag = DisposeBag()
}
}
}).disposed(by: statusDisposeBag)
}
self.isRead.accept(model.message.isReadAcked)
self.thumbnailImageSize = model.thumbnailImageSize
self.imageUploadProgress.accept(model.imageUploadProgress.value)
self.thumbnailImage.accept(model.thumbnailImage.value)
self.contentImage.accept(model.contentImage.value)
caculateHeight()
}
func parse() {
switch type {
......
......@@ -25,6 +25,7 @@ class GDSingleChatMessageImageCell: GDSingleChatMessageBaseCell {
private let contentImageView = UIImageView(frame: .zero)
private func makeContentImageView() {
contentImageView.backgroundColor = .lightGray
contentImageView.contentMode = .scaleAspectFill
contentImageView.layer.cornerRadius = 10
contentImageView.layer.masksToBounds = true
......
......@@ -284,6 +284,14 @@ class GDSingleChatViewModel: BaseViewModel {
continue
}
}
// 图片消息特殊处理
if let body = msg.body as? EMImageMessageBody {
if body.thumbnailDownloadStatus != EMDownloadStatusSucceed {
// 如果没有下载好,需要下载完成之后发布新消息
continue
}
}
}
if msg.status == EMMessageStatusPending {
......@@ -337,6 +345,11 @@ class GDSingleChatViewModel: BaseViewModel {
var hadTimeModel = false
var hadRecording = false
if let existMsg = self.messageList.value.last(where: { $0.messageId == model.messageId }) {
existMsg.updateWithModel(model)
return
}
if let last = oldData.last {
if last.type == .voiceRecording {
......
......@@ -401,8 +401,9 @@ class GDResourceCenter: BaseViewModel {
private func writeToMemory(giftData: LiveGiftData) {
advArr.accept(giftData.adv)
liveGiftDict.accept(giftData.giftDict)
liveGiftTab.accept(giftData.tabArr)
foriegnLiveGiftTab.accept(giftData.foriegnTabArr)
//TODO:守护: added By Pidan
liveGiftTab.accept(giftData.tabArr.filter({ $0.tabType != .guardian}))
foriegnLiveGiftTab.accept(giftData.foriegnTabArr.filter({ $0.tabType != .guardian}))
wishGiftList.accept(giftData.wishArr)
}
......
......@@ -20,7 +20,9 @@ extension GDAPNSSwitchModel: NetworkArrType {
}
public static func createArrFrom(_ json: JSON) -> [GDAPNSSwitchModel] {
return json["switchList"].arrayValue.map { GDAPNSSwitchModel.createFrom($0) }
let list = json["switchList"].arrayValue.map { GDAPNSSwitchModel.createFrom($0) }
//TODO:Live: added By Pidan
return list.filter({ $0.name != "签到通知" && $0.name != "贵人通知" && $0.name != "战队通知" && $0.name != "战队通知" })
}
}
......
......@@ -148,18 +148,19 @@ class GDLiveChatInputView: BaseView {
}
case .audienceMore:
// 展示任务中心红点
let unreadView = UIView(frame: .zero)
unreadView.backgroundColor = .red
unreadView.layer.masksToBounds = true
unreadView.layer.cornerRadius = 4
btn.addSubview(unreadView)
unreadView.snp.makeConstraints { make in
make.width.height.equalTo(8)
make.top.equalToSuperview()
make.right.equalToSuperview()
}
break
// // 展示任务中心红点
// let unreadView = UIView(frame: .zero)
// unreadView.backgroundColor = .red
// unreadView.layer.masksToBounds = true
// unreadView.layer.cornerRadius = 4
// btn.addSubview(unreadView)
//
// unreadView.snp.makeConstraints { make in
// make.width.height.equalTo(8)
// make.top.equalToSuperview()
// make.right.equalToSuperview()
// }
//TODO:战队: added By Pidan
......@@ -195,18 +196,19 @@ class GDLiveChatInputView: BaseView {
// }).disposed(by: disposeBag)
case .anchorMore:
// 展示任务中心红点
let unreadView = UIView(frame: .zero)
unreadView.backgroundColor = .red
unreadView.layer.masksToBounds = true
unreadView.layer.cornerRadius = 4
btn.addSubview(unreadView)
unreadView.snp.makeConstraints { make in
make.width.height.equalTo(8)
make.top.equalToSuperview()
make.right.equalToSuperview()
}
break
// // 展示任务中心红点
// let unreadView = UIView(frame: .zero)
// unreadView.backgroundColor = .red
// unreadView.layer.masksToBounds = true
// unreadView.layer.cornerRadius = 4
// btn.addSubview(unreadView)
//
// unreadView.snp.makeConstraints { make in
// make.width.height.equalTo(8)
// make.top.equalToSuperview()
// make.right.equalToSuperview()
// }
//TODO:战队: added By Pidan
// func refreshFightTeamUnread(for unreadView: UIView) {
......@@ -257,20 +259,21 @@ class GDLiveChatInputView: BaseView {
// }
// }).disposed(by: disposeBag)
case .gift:
let unreadView = UIView(frame: .zero)
unreadView.backgroundColor = .red
unreadView.layer.masksToBounds = true
unreadView.layer.cornerRadius = 4
btn.addSubview(unreadView)
unreadView.snp.makeConstraints { make in
make.width.height.equalTo(8)
make.top.equalToSuperview()
make.right.equalToSuperview()
}
//TODO:新人引导: added By Pidan
// let unreadView = UIView(frame: .zero)
// unreadView.backgroundColor = .red
// unreadView.layer.masksToBounds = true
// unreadView.layer.cornerRadius = 4
// btn.addSubview(unreadView)
//
// unreadView.snp.makeConstraints { make in
// make.width.height.equalTo(8)
// make.top.equalToSuperview()
// make.right.equalToSuperview()
// }
// GDRouter.DataRouter?.hadUserOpenLiveRoomGiftPanel.bind(to: unreadView.rx.isHidden).disposed(by: disposeBag)
break
default:
break
}
......
......@@ -1215,18 +1215,19 @@ class GDGiftPanelView: BaseView {
self.emptyView.isHidden = false
if GDLiveHelper.shared.liveConfig.value.showdraw && GDRouter.BaseBusinessRouter?.isCurrentVersionVerified.value == false {
let attr = NSMutableAttributedString(string: "背包暂无物品,可至", attributes: [.foregroundColor: UIColor.white, .font: UIFont.gd_pingfang(14)])
attr.append(.init(string: "幸运转盘", attributes: [.foregroundColor: UIColor.gd_second, .font: UIFont.gd_pingfang(14)]))
attr.append(.init(string: "获取", attributes: [.foregroundColor: UIColor.white, .font: UIFont.gd_pingfang(14)]))
attr.setTextHighlight(attr.rangeOfAll(), color: nil, backgroundColor: nil) {[weak self] (view, attr, range, rect) in
self?.dismiss()
let attr = NSMutableAttributedString(string: "背包暂无物品", attributes: [.foregroundColor: UIColor.white, .font: UIFont.gd_pingfang(14)])
//TODO:转盘: added By Pidan
// if let functionView = GDLiveHelper.shared.liveVC?.functionView as? GDLiveFunctionView {
// functionView.showTurnplateView()
// let attr = NSMutableAttributedString(string: "背包暂无物品,可至", attributes: [.foregroundColor: UIColor.white, .font: UIFont.gd_pingfang(14)])
//
// attr.append(.init(string: "幸运转盘", attributes: [.foregroundColor: UIColor.gd_second, .font: UIFont.gd_pingfang(14)]))
// attr.append(.init(string: "获取", attributes: [.foregroundColor: UIColor.white, .font: UIFont.gd_pingfang(14)]))
// attr.setTextHighlight(attr.rangeOfAll(), color: nil, backgroundColor: nil) {[weak self] (view, attr, range, rect) in
// self?.dismiss()
// //TODO:转盘: added By Pidan
//// if let functionView = GDLiveHelper.shared.liveVC?.functionView as? GDLiveFunctionView {
//// functionView.showTurnplateView()
//// }
// }
}
let pagraphStyle = NSMutableParagraphStyle()
pagraphStyle.setParagraphStyle(.default)
......
......@@ -9,7 +9,9 @@
import UIKit
import GDToolBox
fileprivate let typeArr: [GDLiveAdminManageType] = [.normal, .guardian]
//TODO:守护: added By Pidan
//fileprivate let typeArr: [GDLiveAdminManageType] = [.normal, .guardian]
fileprivate let typeArr: [GDLiveAdminManageType] = [.normal]
class GDLiveAdminManageController: BaseViewController {
// MARK: UI
......@@ -17,8 +19,8 @@ class GDLiveAdminManageController: BaseViewController {
super.makeUI()
self.title = "场控管理"
makeSegmentView()
//TODO:守护: added By Pidan
// makeSegmentView()
makeScrollView()
......@@ -26,65 +28,65 @@ class GDLiveAdminManageController: BaseViewController {
private let selectedType = BehaviorRelay<GDLiveAdminManageType>(value: .normal)
private let segmentView = UIView(frame: .zero)
// private let segmentView = UIView(frame: .zero)
private let scrollView = UIScrollView(frame: .zero)
private var draging = false
private let segmentHeight: CGFloat = 55
private func makeSegmentView() {
segmentView.backgroundColor = .white
self.view.addSubview(segmentView)
for (index, type) in typeArr.enumerated() {
let btn = UIButton(type: .custom)
btn.setTitle(type.title, for: .normal)
btn.setTitleColor(.black, for: .selected)
btn.setTitleColor(.init(white: 0.5, alpha: 1), for: .normal)
btn.frame = .init(x: CGFloat(index) * (GDScreen.width / 2.0), y: 0, width: GDScreen.width / 2.0, height: segmentHeight)
btn.contentVerticalAlignment = .center
btn.contentHorizontalAlignment = .center
btn.titleLabel?.font = .gd_pingfang(14)
segmentView.addSubview(btn)
btn.rx.tap.subscribe(onNext: {[weak self] _ in
self?.selectedType.accept(type)
}).disposed(by: disposeBag)
selectedType
.map { $0 == type }
.bind(to: btn.rx.isSelected)
.disposed(by: disposeBag)
}
let indicatorView = UIView(frame: .zero)
indicatorView.backgroundColor = .black
indicatorView.frame = .init(x: 0, y: 0, width: GDScreen.width / 2.0, height: 3)
indicatorView.y = segmentHeight - indicatorView.height
segmentView.addSubview(indicatorView)
self.selectedType.distinctUntilChanged().subscribe(onNext: { type in
if let index = typeArr.firstIndex(of: type) {
indicatorView.x = CGFloat(index) * (GDScreen.width / 2.0)
}
}).disposed(by: disposeBag)
let lineView = UIView(frame: .zero)
lineView.backgroundColor = .init(white: 0, alpha: 0.1)
segmentView.addSubview(lineView)
segmentView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(4)
make.left.right.equalToSuperview()
make.height.equalTo(segmentHeight)
}
lineView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(0.5)
}
// segmentView.backgroundColor = .white
// self.view.addSubview(segmentView)
// for (index, type) in typeArr.enumerated() {
// let btn = UIButton(type: .custom)
// btn.setTitle(type.title, for: .normal)
// btn.setTitleColor(.black, for: .selected)
// btn.setTitleColor(.init(white: 0.5, alpha: 1), for: .normal)
// btn.frame = .init(x: CGFloat(index) * (GDScreen.width / 2.0), y: 0, width: GDScreen.width / 2.0, height: segmentHeight)
// btn.contentVerticalAlignment = .center
// btn.contentHorizontalAlignment = .center
// btn.titleLabel?.font = .gd_pingfang(14)
// segmentView.addSubview(btn)
//
// btn.rx.tap.subscribe(onNext: {[weak self] _ in
// self?.selectedType.accept(type)
// }).disposed(by: disposeBag)
//
// selectedType
// .map { $0 == type }
// .bind(to: btn.rx.isSelected)
// .disposed(by: disposeBag)
// }
// let indicatorView = UIView(frame: .zero)
// indicatorView.backgroundColor = .black
// indicatorView.frame = .init(x: 0, y: 0, width: GDScreen.width / 2.0, height: 3)
// indicatorView.y = segmentHeight - indicatorView.height
// segmentView.addSubview(indicatorView)
//
// self.selectedType.distinctUntilChanged().subscribe(onNext: { type in
//
// if let index = typeArr.firstIndex(of: type) {
// indicatorView.x = CGFloat(index) * (GDScreen.width / 2.0)
// }
//
// }).disposed(by: disposeBag)
//
// let lineView = UIView(frame: .zero)
// lineView.backgroundColor = .init(white: 0, alpha: 0.1)
// segmentView.addSubview(lineView)
//
// segmentView.snp.makeConstraints { make in
// make.top.equalToSuperview().offset(4)
// make.left.right.equalToSuperview()
// make.height.equalTo(segmentHeight)
// }
//
// lineView.snp.makeConstraints { make in
// make.left.right.bottom.equalToSuperview()
// make.height.equalTo(0.5)
// }
//
}
private func makeScrollView() {
......@@ -104,9 +106,10 @@ class GDLiveAdminManageController: BaseViewController {
}
scrollView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(segmentView.snp.bottom)
make.height.equalTo(self.view.height - segmentHeight - navigationHeight)
make.left.right.top.bottom.equalToSuperview()
//TODO:守护: added By Pidan
// make.top.equalTo(segmentView.snp.bottom)
make.height.equalTo(self.view.height /*- segmentHeight*/ - navigationHeight)
}
}
......
......@@ -53,11 +53,12 @@ class GDLiveAdminManageTableView: BaseView {
tableView.tableHeaderView = titleLabel
let footLabel = UILabel(frame: CGRect(x: 0, y: 0, width: GDScreen.width, height: 30))
if viewModel.type == .guardian {
footLabel.text = " 提示:守护场控无个数上限"
} else {
//TODO:守护: added By Pidan
// if viewModel.type == .guardian {
// footLabel.text = " 提示:守护场控无个数上限"
// } else {
footLabel.text = " 提示:最多可同时设置8个场控"
}
// }
footLabel.backgroundColor = .clear
footLabel.font = .gd_default(14)
footLabel.textColor = .hexColor("666666")
......
......@@ -13,14 +13,16 @@ import GDToolBox
enum GDLiveAdminManageType {
case normal
case guardian
//TODO:守护: added By Pidan
// case guardian
var title: String? {
switch self {
case .normal:
return "设置场控"
case .guardian:
return "守护场控"
//TODO:守护: added By Pidan
// case .guardian:
// return "守护场控"
}
}
......@@ -28,8 +30,9 @@ enum GDLiveAdminManageType {
switch self {
case .normal:
return "1"
case .guardian:
return "2"
//TODO:守护: added By Pidan
// case .guardian:
// return "2"
}
}
......
......@@ -89,7 +89,7 @@ class GDPKAnchorSelectView: BaseView {
}
private func makeBackButton() {
backBtn.setImage(GDShowRoomBundle.imageNamed("base_navigation_bar_back_icon_white"), for: .normal)
backBtn.setImage(UIImage.whiteNavBack, for: .normal)
bgView.addSubview(backBtn)
backBtn.snp.makeConstraints { (make) in
......
......@@ -94,7 +94,7 @@ class GDPKRecordView: BaseView {
}
private func makeBackButton() {
backBtn.setImage(GDShowRoomBundle.imageNamed("base_navigation_bar_back_icon_white"), for: .normal)
backBtn.setImage(UIImage.whiteNavBack, for: .normal)
bgView.addSubview(backBtn)
backBtn.snp.makeConstraints { (make) in
......
......@@ -83,7 +83,7 @@ class GDPKRandomMatchView: BaseView {
}
private func makeBackButton() {
backBtn.setImage(GDShowRoomBundle.imageNamed("base_navigation_bar_back_icon_white"), for: .normal)
backBtn.setImage(UIImage.whiteNavBack, for: .normal)
bgView.addSubview(backBtn)
backBtn.snp.makeConstraints { (make) in
......
......@@ -78,7 +78,7 @@ class GDPKPanelRuleView: BaseView {
}
private func makeBackButton() {
backBtn.setImage(GDShowRoomBundle.imageNamed("base_navigation_bar_back_icon_white"), for: .normal)
backBtn.setImage(UIImage.whiteNavBack, for: .normal)
bgView.addSubview(backBtn)
backBtn.snp.makeConstraints { (make) in
......
......@@ -84,7 +84,7 @@ class GDPKPanelSettingView: BaseView {
}
private func makeBackButton() {
backBtn.setImage(GDShowRoomBundle.imageNamed("base_navigation_bar_back_icon_white"), for: .normal)
backBtn.setImage(UIImage.whiteNavBack, for: .normal)
bgView.addSubview(backBtn)
backBtn.snp.makeConstraints { (make) in
......
......@@ -169,8 +169,9 @@ class GDTeenagerPlayController: BaseViewController {
self.loadingView.isHidden = false
self.loadingView.startAnimating()
// 开启播放
self.streamPlayView.videoUrl = streamUrl
self.streamPlayView.resetEngine()
self.streamPlayView.videoUrl = streamUrl
self.streamPlayView.prepareToPlay()
self.streamPlayView.play()
self.streamPlayView.state.distinctUntilChanged().subscribe(onNext: {[weak self] state in
......
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 sign in to comment