$offset
.debounce(for: .seconds(0.8), scheduler: DispatchQueue.main)
.tryMap { (offset) → AnyPublisher<ApprovalService.ApprovalQueryResult, Error> in
return self.approvalService.getAssignedApprovals(count: AssignedApprovalsByRequestViewModel.increment, offset: offset)
}
.switchToLatest()
.catch { [weak self] (error: Error) -> Empty<ApprovalService.ApprovalQueryResult, Never> in
self?.assignedApprovalListError = error
return Empty<ApprovalService.ApprovalQueryResult, Never>()
}
.map {
self.totalCount = $0.totalCount
return $0.result.publisher
}
.switchToLatest()
.reduce([Request]()) { (parentRequests: [Request], approvalToSort: Approval) in
guard let request = approvalToSort.request else {
return parentRequests
}
request.approvals = [approvalToSort]
return parentRequests + [request]
}
.**map { unwrappedArray -> [Request]? in**
** return unwrappedArray**
** }**
.assign(to: .requests, on: self)
.store(in: &disposables)