No Description

UserInfoViewModel.swift 2.5KB

    // // UserInfoViewModel.swift // PaiaiDataKit // // Created by ffib on 2018/12/20. // Copyright © 2018 yb. All rights reserved. // import Foundation import RxSwift fileprivate(set) var ShareUserId: String = "" public class UserInfoViewModel { public var shareUserInfo = BehaviorSubject<UserInfo>(value: UserInfo()) public var isLoggedIn: Observable<Void> { return shareUserInfo.asObservable() .filter{ $0.userId != "" } .flatMapLatest { _ in return Observable.just(()) } } public var notLoggedIn: Observable<Void> { return shareUserInfo.asObservable() .filter { $0.userId == "" } .flatMapLatest { _ in return Observable.just(()) } } public var loginCompleted: Observable<Void> { return _loginCompleted.asObservable() } public var guestLoginBtnTapped = PublishSubject<Void>() public var wxLoginBtnTapped = PublishSubject<Void>() private var _loginCompleted = PublishSubject<Void>() 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.onNext(repository.readUserInfo()) } public func guestLogin() { repository.guestLogin().subscribe(onSuccess: { (userInfo) in self.shareUserInfo.onNext(userInfo) self._loginCompleted.onNext(()) }) { (error) in #warning("错误处理") }.disposed(by: disposeBag) } public func wxLogin() { repository.guestLogin().subscribe(onSuccess: { (userInfo) in self.shareUserInfo.onNext(userInfo) self._loginCompleted.onNext(()) }) { (error) in #warning("错误处理") }.disposed(by: disposeBag) } }