Commit a6298044 authored by Alex朱枝文's avatar Alex朱枝文

首页银河管家逻辑刷新优化

parent c6ae0625
......@@ -37,9 +37,11 @@ class YHButlerServiceManager: NSObject {
let qyOption = QYSDKOption(appKey: YhConstant.QiYuSDK.appKey)
qyOption.appName = YhConstant.QiYuSDK.appName
QYSDK.shared().register(with: qyOption)
lastMessage = getLastMessage()
updateSDKAccountInfo(completion: { [weak self] _ in
self?.lastMessage = self?.getLastMessage()
})
}
/// 必须在初始化后调用
func getLastMessage() -> YHButlerServiceMessage? {
guard let message = getSessionList().first else {
......@@ -84,11 +86,7 @@ class YHButlerServiceManager: NSObject {
return
}
getUserInfoViewModel.getUserInfomation(userId) { [weak self] dataString, error in
guard let dataString = dataString else {
completion(false)
return
}
self?.updateUserInfo(userId: userId, userData: dataString, completion: { success in
self?.updateUserInfo(userId: userId, userData: dataString ?? "", completion: { success in
gotoSessionVC()
})
}
......@@ -106,20 +104,49 @@ extension YHButlerServiceManager {
// MARK: - 私有登录登出的处理逻辑
@objc private func loginSuccess() {
setupInfomationForQiYu(completion: { _ in })
}
@objc private func logoutSuccess() {
// 如果登出时需要关闭聊天页
/*
if let controller = QYSDK.shared().sessionViewController(), controller.isViewLoaded && controller.view.window != nil {
controller.closeSession(true) { _, _ in
//
}
}
*/
logoutCurrentUser { _ in
//
}
}
private func setupInfomationForQiYu(completion: @escaping (Bool) -> Void) {
guard let userId = YHLoginManager.shared.userModel?.id, userId.count > 0 else {
completion(false)
return
}
getUserInfoViewModel.getUserInfomation(userId) { [weak self] dataString, error in
guard let dataString = dataString else {
return
}
self?.updateUserInfo(userId: userId, userData: dataString, completion: { _ in })
self?.updateUserInfo(userId: userId, userData: dataString ?? "", completion: { success in
completion(success)
})
}
}
@objc private func logoutSuccess() {
logoutCurrentUser { _ in
//
/// 启动先判断是否当前登录账号是SDK账号,如果不相同,先登出,再用新账号信息写入
private func updateSDKAccountInfo(completion: @escaping (Bool) -> Void) {
guard let userId = YHLoginManager.shared.userModel?.id, userId.count > 0, QYSDK.shared().currentUserID() != userId else {
completion(true)
return
}
logoutCurrentUser { [weak self] success in
if success {
self?.setupInfomationForQiYu(completion: { done in
completion(done)
})
} else {
completion(success)
}
}
}
}
......@@ -146,6 +173,8 @@ extension YHButlerServiceManager {
/// 清空未读数
func clearUnreadCount() {
conversationManager?.clearUnreadCount()
// 清空已读消息后刷新最新消息状态
lastMessage = getLastMessage()
printLog("$$$$clearUnreadCount")
os_log("#####clearUnreadCount")
}
......
......@@ -13,6 +13,8 @@ import SmartCodable
import JXSegmentedView
class YHHomePageViewController: YHBaseViewController {
private var needUpdateMgrItem = false
private var isTopMostAndVisible = true
lazy var viewModel : YHHomePageViewModel = {
let viewModel = YHHomePageViewModel()
......@@ -53,10 +55,28 @@ class YHHomePageViewController: YHBaseViewController {
//2、请求新的数据
getData()
//3、接收七鱼推送通知
setupNotification()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
isTopMostAndVisible = false
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
isTopMostAndVisible = true
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if needUpdateMgrItem {
needUpdateMgrItem = false
updateMgrItem()
}
}
deinit {
NotificationCenter.default.removeObserver(self)
}
......@@ -72,7 +92,8 @@ class YHHomePageViewController: YHBaseViewController {
YHHUD.hide()
if success {
YHButlerServiceManager.shared.clearUnreadCount()
self.updateMgrItem()
// 需要回到页面再刷新已读,因为不在当前页
self.needUpdateMgrItem = true
}
})
}
......@@ -83,6 +104,7 @@ class YHHomePageViewController: YHBaseViewController {
//MARK: - 私有方法
private extension YHHomePageViewController {
func updateMgrItem() {
needUpdateMgrItem = false
let showButler = true
let serviceMessage = YHButlerServiceManager.shared.lastMessage
......@@ -278,7 +300,12 @@ private extension YHHomePageViewController {
}
@objc func didQiYuReceiveNewMsg() {
updateMgrItem()
if !isTopMostAndVisible {
// 需要回到页面再刷新已读,因为不在当前页
self.needUpdateMgrItem = true
} else {
updateMgrItem()
}
}
func setupNotification() {
......
......@@ -34,6 +34,7 @@ class YHOrderTipsView: UIView {
fileprivate static let viewH3 : CGFloat = 226.0
private var orderTipsViewStyle: YHOrderTipsViewStyleType = .none
private var didFirstLayoutItems = false
var tipViewH : CGFloat {
return orderTipsViewStyle.getHeight()
......@@ -65,10 +66,13 @@ class YHOrderTipsView: UIView {
var customerServiceMessage: YHButlerServiceHomeInfoMessage? {
didSet {
updateItems()
if let oldId = oldValue?.serviceMessage?.id, oldId.count > 0, oldId == customerServiceMessage?.serviceMessage?.id, oldValue?.showButler == customerServiceMessage?.showButler, oldValue?.serviceMessage?.isRead != customerServiceMessage?.serviceMessage?.isRead {
if !didFirstLayoutItems {
updateItems()
}
mgrItem.updateMessageState(didReadMessage: customerServiceMessage?.serviceMessage?.isRead ?? true)
} else {
updateItems()
mgrItem.updateManagerTipsItemView(message: customerServiceMessage?.serviceMessage?.content, didReadMessage: customerServiceMessage?.serviceMessage?.isRead == true)
}
}
......@@ -286,7 +290,7 @@ private extension YHOrderTipsView {
make.height.equalTo(YHOrderTipsItemView.viewH)
}
}
didFirstLayoutItems = true
// setNeedsLayout()
// layoutIfNeeded()
}
......
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