1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 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(())
- }).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)
- }
- }
|