Skip to content

Instantly share code, notes, and snippets.

@olivaresf
Last active August 2, 2020 05:15
Show Gist options
  • Save olivaresf/7011082f5ab0528fd6ee055895520eb7 to your computer and use it in GitHub Desktop.
Save olivaresf/7011082f5ab0528fd6ee055895520eb7 to your computer and use it in GitHub Desktop.
private struct FetchSuccess {
let asignees: [IssueAssigneeViewModel]
let nextPage: Int?
}
private func fetch(owner: String,
repo: String,
pageNumber: Int,
completion: @escaping (Result<FetchSuccess>) -> Void) {
let request = V3AssigneesRequest(owner: owner,
repo: repo,
page: pageNumber)
client.client.send(request) { result in
switch result {
case .success(let response):
let sortedUsers = response.data
.sorted {
if $0.login == self.client.userSession?.username {
return true
} else {
return $0.login.caseInsensitiveCompare($1.login) == .orderedAscending
}
}.map { IssueAssigneeViewModel(login: $0.login, avatarURL: $0.avatarUrl) }
let fetchSuccess = FetchSuccess(asignees: sortedUsers,
nextPage: response.next)
completion(.success(fetchSuccess))
case .failure(let error):
completion(.error(error))
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment