Files
OrderScheduling/OrderScheduling/Common/View/MessageCount.swift
2023-12-26 17:51:57 +08:00

70 lines
2.4 KiB
Swift

//
// MessageCount.swift
// OrderScheduling
//
// Created by on 2023/8/18.
//
import Foundation
import RxRelay
import RxSwift
public let MCOUNT = MessageCount.default
open class MessageCount : NSObject {
public static let `default` = MessageCount()
private let disposeBag = DisposeBag()
private let reloadToDoMessageCountRelay = ReplayRelay<Any?>.create(bufferSize: 1)
private let reloadReviewFailedMessageCountRelay = ReplayRelay<Any?>.create(bufferSize: 1)
public var messageCountRelay = ReplayRelay<Int>.create(bufferSize: 1)
public var pendingCountRelay = ReplayRelay<Int>.create(bufferSize: 1)
public var reviewFailedCountRelay = ReplayRelay<Int>.create(bufferSize: 1)
public override init() {
super.init()
Observable.combineLatest(reloadToDoMessageCountRelay, USER.refreshTokenSub)
.filter({ (_,_) in
return USER.isLogin == true
})
.flatMapLatest { (_,_) in
return RQ.toDoMessageCount()
}
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] response in
if response?.success == true {
if let messageCount = response?.data?.messageCount {
self?.messageCountRelay.accept(messageCount)
}
if let toDoCount = response?.data?.toDoCount {
self?.pendingCountRelay.accept(toDoCount)
}
}else{
}
})
.disposed(by: disposeBag)
Observable.combineLatest(reloadReviewFailedMessageCountRelay, USER.refreshTokenSub)
.filter({ (_,_) in
return USER.isLogin == true
})
.flatMapLatest { (_,_) in
return RQ.orderList(parameters: OrderListParameters(pageNum: 1, queryType: .TO_AUDIT_FAILED))
}
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] response in
if response?.success == true,let total = response?.total {
self?.reviewFailedCountRelay.accept(total)
}
})
.disposed(by: disposeBag)
}
func newestMessage() {
reloadToDoMessageCountRelay.accept(nil)
reloadReviewFailedMessageCountRelay.accept(nil)
}
}