1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import Foundation
- import RxSwift
- import RxCocoa
- public protocol MessageViewModelDelegate: class {
- func didSelect(type: MessageType)
- }
- public class MessageViewModel {
- private var repository: MessageRepository
- private var disposeBag = DisposeBag()
- public weak var delegate: MessageViewModelDelegate?
- public var sysReadedTip = BehaviorRelay<Bool>(value: true)
- public var commentReadedTip = BehaviorRelay<Bool>(value: true)
- public var thumbupReadedTip = BehaviorRelay<Bool>(value: true)
- public var readedTip = BehaviorRelay<Bool>(value: true)
- public var sysBtnTapped = PublishSubject<Void>()
- public var commentBtnTapped = PublishSubject<Void>()
- public var thumbupBtnTapped = PublishSubject<Void>()
- public init() {
- self.repository = MessageRepository()
- sysBtnTapped.asObservable().subscribe {[weak self] (_) in
- guard let `self` = self else { return }
- self.readedTip = self.sysReadedTip
- self.delegate?.didSelect(type: .system)
- }.disposed(by: disposeBag)
- commentBtnTapped.asObservable().subscribe {[weak self] (_) in
- guard let `self` = self else { return }
- self.readedTip = self.commentReadedTip
- self.delegate?.didSelect(type: .comment)
- }.disposed(by: disposeBag)
- thumbupBtnTapped.asObservable().subscribe {[weak self] (_) in
- guard let `self` = self else { return }
- self.readedTip = self.thumbupReadedTip
- self.delegate?.didSelect(type: .thumbup)
- }.disposed(by: disposeBag)
- }
- public func reload() {
- repository.loadContent().asObservable().subscribe(onNext: {[unowned self] (items) in
- for item in items {
- switch item.msg_type {
- case .system:
- self.sysReadedTip.accept(item.msg_unread_num == 0)
- case .thumbup:
- self.thumbupReadedTip.accept(item.msg_unread_num == 0)
- case .comment:
- self.commentReadedTip.accept(item.msg_unread_num == 0)
- }
- }
- }).disposed(by: disposeBag)
- }
-
- public func clear() {
- sysReadedTip.accept(false)
- thumbupReadedTip.accept(false)
- commentReadedTip.accept(false)
- }
- }
|