Skip to content

Instantly share code, notes, and snippets.

@FitzAfful
Created April 17, 2020 23:36
Show Gist options
  • Save FitzAfful/7d497f32f50049a22e7a6c6d292a17ed to your computer and use it in GitHub Desktop.
Save FitzAfful/7d497f32f50049a22e7a6c6d292a17ed to your computer and use it in GitHub Desktop.
import Foundation
import Alamofire
protocol ObservableViewModelProtocol {
func fetchEmployees()
func setError(_ message: String)
var employees: Observable<[Employee]> { get set } //1
var errorMessage: Observable<String?> { get set }
var error: Observable<Bool> { get set }
}
class ObservableViewModel: ObservableViewModelProtocol {
var errorMessage: Observable<String?> = Observable(nil)
var error: Observable<Bool> = Observable(false)
var apiManager: APIManager?
var employees: Observable<[Employee]> = Observable([]) //2
init(manager: APIManager = APIManager()) {
self.apiManager = manager
}
func setAPIManager(manager: APIManager) {
self.apiManager = manager
}
func fetchEmployees() {
self.apiManager!.getEmployees { (result: DataResponse<EmployeesResponse, AFError>) in
switch result.result {
case .success(let response):
if response.status == "success" {
self.employees = Observable(response.data) //3
return
}
self.setError(BaseNetworkManager().getErrorMessage(response: result))
case .failure:
self.setError(BaseNetworkManager().getErrorMessage(response: result))
}
}
}
func setError(_ message: String) {
self.errorMessage = Observable(message)
self.error = Observable(true)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment