Skip to content

Instantly share code, notes, and snippets.

@hsleedevelop
Last active January 7, 2019 06:17
Show Gist options
  • Save hsleedevelop/f12c7055f940d96e5ef47fd2cdfa5da9 to your computer and use it in GitHub Desktop.
Save hsleedevelop/f12c7055f940d96e5ef47fd2cdfa5da9 to your computer and use it in GitHub Desktop.
//캐릭터 변경, 넽 변경 에 따른 홈-전체 리로드
guard let reachabilityObservable = try? DefaultReachabilityService.shared().reachability.asObservable() else {
return
}
Observable.combineLatest(UserDataManager.shared.currentCharacter, reachabilityObservable, viewModel.currentTabEditEvent.startWith(nil))
.distinctUntilChanged({ (lhs, rhs) -> Bool in
return lhs.2 != rhs.2 || lhs.1.reachable != rhs.1.reachable || lhs.0 != rhs.0
})
.map { [weak self] args -> (CharacterType?, ReachabilityStatus, RxTimeInterval) in
guard let self = self else { return (args.0, args.1, 0.0)}
let delay = RxTimeInterval(self.editSection == nil ? 0.0 : 0.75)
self.editSection = args.2
return (args.0, args.1, delay)
}
.flatMapFirst { args -> Observable<(CharacterType?, ReachabilityStatus)> in
//let delay = self.editSection == nil ? 0 : 0.75
Log.d(">>>>>>>>>>>>> reloadSectionsDelay = \(args.2), \(Date().debugDescription)")
return Observable.just((args.0, args.1)).delaySubscription(RxTimeInterval(args.2), scheduler: MainScheduler.instance)
}
.observeOn(MainScheduler.instance)
.subscribe(onNext: { [weak self] _, reachabilityStatus in
guard let self = self else { return }
//self.editSection = nil
self.reachable = reachabilityStatus.reachable
self.pageViewController.dataSource = self.hasSession ? self : nil //prevent gesture on pageViewController
self.currentSection = self.sectionSources.firstObject //set first viewcontroller on array
})
.disposed(by: disposeBag)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment