Brak opisu

MessageViewModel.swift 2.4KB

    // // MessageViewModel.swift // PaiaiDataKit // // Created by FFIB on 2018/12/7. // Copyright © 2018 FFIB. All rights reserved. // 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) } }