I've made connection checker according to this question How to check internet connection in alamofire?
import Foundation
import Alamofire
class Connectivity {
class var isConnectedToInternet:Bool {
return NetworkReachabilityManager()?.isReachable ?? false
}
}
And I'm checking connection before I make request like this
func fetchPhotos() {
if Connectivity.isConnectedToInternet{
newOrPopularChooser(self.page)
.observe(on: MainScheduler.instance)
.subscribe{ (response) in
self.photos.append(contentsOf: response.data)
self.page += 1
if self.page == response.countOfPages {
self.isEndReached = true
}
self.view?.onFetchPhotoSuccess()
} onError: { error in
self.view?.onFetchPhotoFailure(error: error.localizedDescription)
}.disposed(by: disposeBag)
} else {
self.view?.onFetchPhotoFailure(error: "No Internet connection")
}
}
And here is the code of fetch photo success and failure
func onFetchPhotoSuccess() {
self.refreshControl.endRefreshing()
footerView.stopAnimating()
self.isLoadingList = false
self.collectionView.reloadData()
if !(self.presenter?.photos.isEmpty)! {
self.collectionView!.collectionViewLayout.invalidateLayout()
self.collectionView!.layoutSubviews()
self.collectionView.backgroundView = nil
}
}
func onFetchPhotoFailure(error: String) {
print("View receives the response from Presenter with error: \(error)")
let storyboard = UIStoryboard(name: "NoInternetConnectionView", bundle: .main)
let controller = storyboard.instantiateViewController(identifier: "NoInternetConnectionVC")
self.presenter?.photos = []
self.collectionView.reloadData()
collectionView.backgroundView = controller.view
self.refreshControl.endRefreshing()
footerView.stopAnimating()
}
So if I have internet on I see my collection but when I'm turning my internet off and then turning it back and reload my collection view I'm getting empty collectionView. No no internet connection background just empty background like this