Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. class ProfileView {
  2. var refreshButton: Button
  3. var fullNameLabel: Label
  4. var ageLabel: Label
  5.  
  6. var viewmodel: ProfileViewModelProtocol
  7.  
  8.  
  9. init(viewModel: ProfileViewModelProtocol) {
  10. self.viewModel = ProfileViewModel
  11. }
  12.  
  13. func viewDidLoad() {
  14. viewModel.fullName.bind(to: fullNameLabel)
  15. viewModel.age.bind(to: ageLabel)
  16.  
  17. viewModel.loading.bind(to: activityIndicator.isShowing)
  18. viewModel.errors.subscribeNext { error in
  19. showAlert(error)
  20. }
  21.  
  22. view.pullToRefresh.tap.bind(to: viewmodel.didTapRefresh)
  23. }
  24.  
  25. func showAlert(error: Error) {
  26. //Do something
  27. }
  28. }
  29.  
  30.  
  31.  
  32. class LoginView {
  33. var userNameTextfield
  34. var passwordTextfield
  35.  
  36. var loginButton
  37.  
  38. var loading
  39. var errors
  40.  
  41.  
  42. func viewDidLoad() {
  43. userNameTextfield.rx_textfield.bind(to: viewmodel.username)
  44. passwordTextfield.rx_textfield.bind(to: viewmodel.password)
  45.  
  46. loginButton.rx_tap.bind(to: viewmodel.didTapLogin)
  47.  
  48. viewmodel.validInput.bind(to: loginButton.isEnabled)
  49.  
  50. viewmodel.onSuccess.subsribeNext {
  51. //Change to main screen
  52. }
  53. }
  54. }
  55.  
  56.  
  57. class LoginViewModel {
  58. //Input
  59. var username: Observable<String>
  60. var password: Observable<String>
  61.  
  62. var didTapLogin: PublishSubject<Void>
  63.  
  64. //Output
  65. var validInput: Observable<Bool>(false)
  66.  
  67. var loading: PublishSubject<Void>
  68. var onSuccess: PublishSubject<Void>
  69. var errors: PublishSubject<Error>
  70.  
  71. var loginService: LoginService
  72.  
  73. init() {
  74. combineLatest(username, password).map { TextUltis.notEmpty(username) && TextUltis.notEmpty(password) }.bind(to: validInput)
  75.  
  76. didTapLogin.subscribeNext {
  77. loginService.login(username, password).subscribeNext {
  78. onSuccess.next()
  79. }
  80. }
  81.  
  82. didTapLogin.flatMap { loginService.login(username, password) }.bind(to: onSuccess)
  83. }
  84. }
  85.  
  86. class LoginService {
  87. func login(userName: String, password: String) -> Observable<Void> {
  88. return Observable.create { observer in
  89. observer.next()
  90. observer.completed()
  91. }
  92. }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement