Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extension MoviesCollectionView{
- func setupRx(){
- setupRxCollectionView()
- setupRxDrivers()
- }
- func setupRxCollectionView(){
- let dataSubject = PublishSubject<[MoviesSection]>()
- let dataSource = RxCollectionViewSectionedAnimatedDataSource<MoviesSection>(
- configureCell:{ dataSource, tableView, indexPath, item in
- let cell = tableView.dequeueReusableCell(withReuseIdentifier: self.cellName(), for: indexPath) as! MovieViewCell
- cell.setupWithMovie(item)
- return cell
- })
- dataSource.canMoveItemAtIndexPath = { dataSource, indexPath in
- return true
- }
- dataSubject
- .bind(to: collectionView.rx.items(dataSource: dataSource))
- .disposed(by: disposeBag)
- self.dataSubject = dataSubject
- self.dataSource = dataSource
- }
- func setupRxDrivers(){
- movies
- .driver
- .throttle(.milliseconds(500), latest: true)
- .drive(onNext:{ [weak self] movies in
- guard let this = self else { return }
- this.captureSearchString()
- this.isLoading.accept(false)
- this.dataSubject.onNext(this.dataFiltered())
- }).disposed(by: disposeBag)
- isLoading
- .drive(refreshControl.rx.isRefreshing)
- .disposed(by: disposeBag)
- currentPage
- .drive(onNext:{ [weak self] currentPage in
- self?.loadMovies()
- })
- .disposed(by: disposeBag)
- searchString
- .drive( onNext:{ [weak self] searchString in
- guard let this = self else { return }
- this.dataSubject.onNext(this.dataFiltered())
- })
- .disposed(by: disposeBag)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement