// // UserInfoViewModel.swift // PaiaiDataKit // // Created by ffib on 2018/12/20. // Copyright © 2018 yb. All rights reserved. // import Foundation import RxSwift import RxCocoa fileprivate(set) var ShareUserId: String = "" public class UserInfoViewModel { public var shareUserInfo = BehaviorRelay(value: UserInfo()) public var isLoggedIn: Observable { return shareUserInfo.asObservable() .filter{ $0.userId != "" } .flatMapLatest { _ in return Observable.just(()) } } public var notLoggedIn: Observable { return shareUserInfo.asObservable() .filter { $0.userId == "" } .flatMapLatest { _ in return Observable.just(()) } } public var loginCompleted: Observable { return _loginCompleted.asObservable() } public var guestLoginBtnTapped = PublishSubject() public var wxLoginBtnTapped = PublishSubject() private var _loginCompleted = PublishSubject() private var repository: UserInfoRepository private var disposeBag = DisposeBag() public init() { self.repository = UserInfoRepository(userInfoStore: UserInfoStore(), guestRemoteAPI: GuestUserInfoRemoteAPI(), wxRemoteAPI: WXUserInfoRemoteAPI()) shareUserInfo.asObservable().subscribe(onNext: { (userInfo) in ShareUserId = userInfo.userId }).disposed(by: disposeBag) guestLoginBtnTapped.subscribe {[unowned self] _ in self.guestLogin() }.disposed(by: disposeBag) wxLoginBtnTapped.subscribe {[unowned self] _ in self.wxLogin() }.disposed(by: disposeBag) load() } fileprivate func load() { shareUserInfo.accept(repository.readUserInfo()) } public func guestLogin() { repository.guestLogin().subscribe(onSuccess: { (userInfo) in self.shareUserInfo.accept(userInfo) self._loginCompleted.onNext(()) }).disposed(by: disposeBag) } public func wxLogin() { Toast.showActivity(message: "正在登陆") repository.wxLogin().subscribe(onSuccess: { (userInfo) in self.shareUserInfo.accept(userInfo) self._loginCompleted.onNext(()) Toast.hide() }).disposed(by: disposeBag) } deinit { print("销毁") } }