| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- 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()
- .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.accept(repository.readUserInfo())
- }
-
- public func guestLogin() {
- repository.guestLogin().subscribe(onSuccess: { (userInfo) in
- self.shareUserInfo.accept(userInfo)
- self._loginCompleted.onNext(())
- }) { (error) in
- #warning("错误处理")
- }.disposed(by: disposeBag)
- }
-
- public func wxLogin() {
- repository.guestLogin().subscribe(onSuccess: { (userInfo) in
- self.shareUserInfo.accept(userInfo)
- self._loginCompleted.onNext(())
- }) { (error) in
- #warning("错误处理")
- }.disposed(by: disposeBag)
- }
- }
|