|
//
// UserInfoViewModel.swift
// PaiaiDataKit
//
// Created by FFIB on 2018/12/20.
// Copyright © 2018 FFIB. All rights reserved.
//
import Foundation
import RxSwift
import RxCocoa
fileprivate(set) var ShareUserId: String = ""
public class UserInfoViewModel {
public var shareUserInfo = BehaviorRelay<UserInfo>(value: UserInfo())
public var isLoggedIn: Observable<Void> {
return shareUserInfo.asObservable()
.distinctUntilChanged({ $0.userId == $1.userId })
.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()
.distinctUntilChanged({ $0.userId == $1.userId })
.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)
}
}
|