Skip to content

Commit

Permalink
🐛 Update organization when updating main data
Browse files Browse the repository at this point in the history
  • Loading branch information
stoeffn committed Oct 24, 2018
1 parent 89414ca commit 5b21d5c
Showing 1 changed file with 25 additions and 13 deletions.
38 changes: 25 additions & 13 deletions StudKit/StudIp/StudIpService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -117,32 +117,44 @@ public class StudIpService {
// MARK: - Updating

func updateMainData(organization: Organization, forced: Bool = false, completion: @escaping ResultHandler<User>) {
guard let context = organization.managedObjectContext else { fatalError() }

let group = DispatchGroup()
var discoveryResult: Result<ApiRoutesAvailablity>!
var userResult: Result<User>!
var semesterResult: Result<Set<Semester>>!
var coursesResult: Result<Set<Course>>?

group.enter()
organization.updateDiscovery(forced: forced) { result in
discoveryResult = result
group.leave()
}
Organization.update(in: context) { _ in
context.performAndWait {
try? context.saveAndWaitWhenChanged()
self.api.baseUrl = organization.apiUrl
}

group.enter()
organization.updateCurrentUser(forced: forced) { result in
userResult = result
group.enter()
organization.updateDiscovery(forced: forced) { result in
discoveryResult = result
group.leave()
}

group.enter()
organization.updateCurrentUser(forced: forced) { result in
userResult = result

organization.updateSemesters(forced: forced) { result in
semesterResult = result
organization.updateSemesters(forced: forced) { result in
semesterResult = result

guard let user = userResult.value else { return group.leave() }
guard let user = userResult.value else { return group.leave() }

user.updateAuthoredCourses(forced: forced) { result in
coursesResult = result
group.leave()
user.updateAuthoredCourses(forced: forced) { result in
coursesResult = result
group.leave()
}
}
}

group.leave()
}

group.notify(queue: .main) {
Expand Down

0 comments on commit 5b21d5c

Please sign in to comment.