//
// 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)
}
}
|