Fix sidebar update pill cached popover flow (#2142)

* test: cover cached update pill first-click flow

* fix: use cached sidebar update popover
This commit is contained in:
Austin Wang 2026-03-25 04:21:03 -07:00 committed by GitHub
parent 049d296267
commit 99ca3c9b9a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 286 additions and 92 deletions

View file

@ -7,6 +7,7 @@ class UpdateViewModel: ObservableObject {
@Published var state: UpdateState = .idle
@Published var overrideState: UpdateState?
@Published var detectedUpdateVersion: String?
@Published private(set) var detectedUpdateItem: SUAppcastItem?
#if DEBUG
@Published var debugOverrideText: String?
#endif
@ -19,15 +20,22 @@ class UpdateViewModel: ObservableObject {
effectiveState.isIdle && detectedUpdateVersion != nil
}
var hasCachedDetectedUpdateDetails: Bool {
detectedUpdateItem != nil
}
var showsPill: Bool {
!effectiveState.isIdle || showsDetectedBackgroundUpdate
}
func recordDetectedUpdate(_ item: SUAppcastItem) {
detectedUpdateVersion = Self.normalizedDetectedUpdateVersion(from: item.displayVersionString)
let version = Self.normalizedDetectedUpdateVersion(from: item.displayVersionString)
detectedUpdateItem = version == nil ? nil : item
detectedUpdateVersion = version
}
func clearDetectedUpdate() {
detectedUpdateItem = nil
detectedUpdateVersion = nil
}