Skip to content

Instantly share code, notes, and snippets.

@AshvinGudaliya
Last active October 16, 2018 08:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AshvinGudaliya/a03529e8b008947c203975cd0ae70f85 to your computer and use it in GitHub Desktop.
Save AshvinGudaliya/a03529e8b008947c203975cd0ae70f85 to your computer and use it in GitHub Desktop.
PullToRefreshModel is use to handle pagination
//
// PullToRefreshModel.swift
// BaseProject
//
// Created by AshvinGudaliya on 22/06/18.
// Copyright © 2018 Ashvin Gudaliya. All rights reserved.
//
import UIKit
class PullToRefreshModel {
private var isLastData: Bool = false
private var isWebDataLoaded: Bool = false
private var isWebServicesCallRuning: Bool = false
private var page: Int = 0
private var isFailedWebApi: Bool = false
init(page: Int) {
self.page = page
isLastData = false
isWebDataLoaded = false
isWebServicesCallRuning = false
isFailedWebApi = false
}
func resetWithPage(page: Int) {
self.page = page
isLastData = false
isWebDataLoaded = false
isFailedWebApi = false
}
func getPageIndex() -> String { return page.string }
func isLoadMoreDataWebservices(index: IndexPath, data: [Any], completionsHandler: (() -> Void)) {
if !isLastData && !isWebServicesCallRuning && data.count != 0 && !isFailedWebApi && index.row != 0{
if (data.count - 3) <= index.row {
self.start()
completionsHandler()
}
}
}
func showSkeltoneView(data: [Any]) -> Bool {
return data.count == 0 && !self.isWebDataLoaded && !self.isFailedWebApi
}
func responseData(withNewData data: [Any]) {
if data.count == 0 {
isLastData = true
}
else{
isLastData = false
page += 1
}
self.isWebDataLoaded = true
self.isFailedWebApi = false
}
func apiFailer() {
self.stop()
self.isFailedWebApi = true
}
func start() {
self.isWebServicesCallRuning = true
}
func stop() {
self.isWebServicesCallRuning = false
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment