暫無描述

MessageViewModel.swift 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //
  2. // MessageViewModel.swift
  3. // PaiaiDataKit
  4. //
  5. // Created by FFIB on 2018/12/7.
  6. // Copyright © 2018 FFIB. 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 repository: 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 readedTip = BehaviorRelay<Bool>(value: true)
  22. public var sysBtnTapped = PublishSubject<Void>()
  23. public var commentBtnTapped = PublishSubject<Void>()
  24. public var thumbupBtnTapped = PublishSubject<Void>()
  25. public init() {
  26. self.repository = MessageRepository()
  27. sysBtnTapped.asObservable().subscribe {[weak self] (_) in
  28. guard let `self` = self else { return }
  29. self.readedTip = self.sysReadedTip
  30. self.delegate?.didSelect(type: .system)
  31. }.disposed(by: disposeBag)
  32. commentBtnTapped.asObservable().subscribe {[weak self] (_) in
  33. guard let `self` = self else { return }
  34. self.readedTip = self.commentReadedTip
  35. self.delegate?.didSelect(type: .comment)
  36. }.disposed(by: disposeBag)
  37. thumbupBtnTapped.asObservable().subscribe {[weak self] (_) in
  38. guard let `self` = self else { return }
  39. self.readedTip = self.thumbupReadedTip
  40. self.delegate?.didSelect(type: .thumbup)
  41. }.disposed(by: disposeBag)
  42. }
  43. public func reload() {
  44. repository.loadContent().asObservable().subscribe(onNext: {[unowned self] (items) in
  45. for item in items {
  46. switch item.msg_type {
  47. case .system:
  48. self.sysReadedTip.accept(item.msg_unread_num == 0)
  49. case .thumbup:
  50. self.thumbupReadedTip.accept(item.msg_unread_num == 0)
  51. case .comment:
  52. self.commentReadedTip.accept(item.msg_unread_num == 0)
  53. }
  54. }
  55. }).disposed(by: disposeBag)
  56. }
  57. public func clear() {
  58. sysReadedTip.accept(false)
  59. thumbupReadedTip.accept(false)
  60. commentReadedTip.accept(false)
  61. }
  62. }