Only sign in before refreshing when using Apple data source

This commit is contained in:
Brandon Evans 2020-12-27 18:33:29 -07:00
parent 8594996b87
commit de54c3d784
No known key found for this signature in database
GPG key ID: D58A4B8DB64F8E93

View file

@ -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.