Files
steipete--codexbar/Sources/CodexBar/MenuOpenRefreshPlan.swift
T
2026-07-13 12:22:33 +08:00

42 lines
1.3 KiB
Swift

import CodexBarCore
struct MenuOpenRefreshPlan: Equatable {
struct Inputs {
let refreshAllOnOpen: Bool
let enabledProviders: [UsageProvider]
let visibleProviders: [UsageProvider]
let refreshingProviders: Set<UsageProvider>
let staleProviders: Set<UsageProvider>
let missingProviders: Set<UsageProvider>
}
enum Scheduling: Equatable {
case sequential
case concurrent
}
let providers: [UsageProvider]
let scheduling: Scheduling
let refreshCodexDashboard: Bool
static func resolve(_ inputs: Inputs) -> Self {
if inputs.refreshAllOnOpen {
return Self(
providers: inputs.enabledProviders,
scheduling: .concurrent,
refreshCodexDashboard: inputs.enabledProviders.contains(.codex))
}
let enabled = Set(inputs.enabledProviders)
let providers = inputs.visibleProviders.filter {
enabled.contains($0) &&
(inputs.refreshingProviders.contains($0) || inputs.staleProviders.contains($0) ||
inputs.missingProviders.contains($0))
}
return Self(
providers: providers,
scheduling: .sequential,
refreshCodexDashboard: false)
}
}