From de54c3d784498542177a9b4e3f45b8b0efad0276 Mon Sep 17 00:00:00 2001 From: Brandon Evans Date: Sun, 27 Dec 2020 18:33:29 -0700 Subject: [PATCH] Only sign in before refreshing when using Apple data source --- Xcodes/Backend/AppState+Update.swift | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/Xcodes/Backend/AppState+Update.swift b/Xcodes/Backend/AppState+Update.swift index a6e41aa..856d49f 100644 --- a/Xcodes/Backend/AppState+Update.swift +++ b/Xcodes/Backend/AppState+Update.swift @@ -21,7 +21,7 @@ extension AppState { func update() { guard !isUpdating else { return } - updatePublisher = update() + updatePublisher = updateAvailableXcodes(from: self.dataSource) .sink( receiveCompletion: { [unowned self] completion in switch completion { @@ -36,19 +36,12 @@ extension AppState { receiveValue: { _ in } ) } - - private func update() -> AnyPublisher<[AvailableXcode], Error> { - signInIfNeeded() - .flatMap { [unowned self] in - self.updateAvailableXcodes(from: self.dataSource) - } - .eraseToAnyPublisher() - } - + private func updateAvailableXcodes(from dataSource: DataSource) -> AnyPublisher<[AvailableXcode], Error> { switch dataSource { case .apple: - return releasedXcodes().combineLatest(prereleaseXcodes()) + return signInIfNeeded() + .flatMap { [unowned self] in self.releasedXcodes().combineLatest(self.prereleaseXcodes()) } .receive(on: DispatchQueue.main) .map { releasedXcodes, prereleaseXcodes in // Starting with Xcode 11 beta 6, developer.apple.com/download and developer.apple.com/download/more both list some pre-release versions of Xcode.