No Description

MessageViewModel.swift 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //
  2. // MessageViewModel.swift
  3. // PaiAi
  4. //
  5. // Created by ffib on 2018/12/7.
  6. // Copyright © 2018 yb. All rights reserved.
  7. //
  8. import Foundation
  9. import RxSwift
  10. import RxCocoa
  11. public protocol MessageViewModelDelegate: class {
  12. func didSelect(type: MessageType)
  13. }
  14. public class MessageViewModel {
  15. private var respository: MessageRepository
  16. private var disposeBag = DisposeBag()
  17. public weak var delegate: MessageViewModelDelegate?
  18. public var sysReadedTip = BehaviorRelay<Bool>(value: true)
  19. public var commentReadedTip = BehaviorRelay<Bool>(value: true)
  20. public var thumbupReadedTip = BehaviorRelay<Bool>(value: true)
  21. public var sysBtnTapped = PublishSubject<Void>()
  22. public var commentBtnTapped = PublishSubject<Void>()
  23. public var thumbupBtnTapped = PublishSubject<Void>()
  24. public init() {
  25. self.respository = MessageRepository()
  26. sysBtnTapped.asObservable().subscribe {[weak self] (_) in
  27. guard let `self` = self else { return }
  28. self.delegate?.didSelect(type: .system)
  29. }.disposed(by: disposeBag)
  30. commentBtnTapped.asObservable().subscribe {[weak self] (_) in
  31. guard let `self` = self else { return }
  32. self.delegate?.didSelect(type: .comment)
  33. }.disposed(by: disposeBag)
  34. thumbupBtnTapped.asObservable().subscribe {[weak self] (_) in
  35. guard let `self` = self else { return }
  36. self.delegate?.didSelect(type: .thumbup)
  37. }.disposed(by: disposeBag)
  38. }
  39. public func reload() {
  40. respository.load().asObservable().subscribe(onNext: {[unowned self] (items) in
  41. for item in items {
  42. switch item.msg_type {
  43. case .system:
  44. self.sysReadedTip.accept(item.msg_unread_num == 0)
  45. case .thumbup:
  46. self.thumbupReadedTip.accept(item.msg_unread_num == 0)
  47. case .comment:
  48. self.commentReadedTip.accept(item.msg_unread_num == 0)
  49. }
  50. }
  51. }).disposed(by: disposeBag)
  52. }
  53. }