diff --git a/StudKit/StudIp/StudIpService.swift b/StudKit/StudIp/StudIpService.swift index 1d67a3ed..ed757883 100644 --- a/StudKit/StudIp/StudIpService.swift +++ b/StudKit/StudIp/StudIpService.swift @@ -117,6 +117,8 @@ public class StudIpService { // MARK: - Updating func updateMainData(organization: Organization, forced: Bool = false, completion: @escaping ResultHandler) { + guard let context = organization.managedObjectContext else { fatalError() } + let group = DispatchGroup() var discoveryResult: Result! var userResult: Result! @@ -124,25 +126,35 @@ public class StudIpService { var coursesResult: Result>? 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) {