Guest User

Untitled

a guest
Jul 17th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. private func bindAttendeePhoto() {
  2. let attendeePhoto = viewModel.photo
  3. .flatMap { image -> Observable<UIImage> in
  4. self.printBadge()
  5. return Observable.just(image!)
  6. }
  7. .observeOn(ConcurrentDispatchQueueScheduler(qos: .background))
  8. .flatMapLatest { image -> Observable<(UIImage, Bool)> in
  9. let eventId = self.event.id
  10. let fileSize = image.getFilesize()
  11. let isUploaded = self.viewModel.uploadAttendeePhoto(eventId: eventId!, fileSize: fileSize)
  12. return Observable.combineLatest(Observable.just(image), isUploaded)
  13. }
  14. .share()
  15.  
  16. attendeePhoto
  17. .map { $0 }
  18. .observeOn(MainScheduler.instance)
  19. .subscribe(onNext: { [weak self] image, _ in
  20. if !(self?.viewModel.isPhotoSaved.value)! {
  21. self?.saveImage(image: image)
  22. }
  23. }, onError: { err in
  24. NotificationCenter.default.post(name: .attendeePhotoFailed, object: nil, userInfo: [
  25. "error": err,
  26. "attendeeId": self.viewModel.attendeeId.value
  27. ])
  28. })
  29. .disposed(by: bag)
  30.  
  31. attendeePhoto
  32. .map { $1 }
  33. .bind(to: viewModel.isUploaded)
  34. .disposed(by: bag)
  35.  
  36. viewModel.isUploaded
  37. .asDriver(onErrorJustReturn: false)
  38. .drive(onNext: { [weak self] isUploaded in
  39. self?.toggleAttendeePhoto(hasUploaded: isUploaded)
  40. })
  41. .disposed(by: bag)
  42. }
Add Comment
Please, Sign In to add comment