Files
2026-07-13 12:22:33 +08:00

46 lines
1.7 KiB
Swift

import CodexBarCore
import Foundation
import SwiftUI
struct GeminiProviderImplementation: ProviderImplementation {
let id: UsageProvider = .gemini
let supportsLoginFlow: Bool = true
@MainActor
func settingsActions(context: ProviderSettingsContext) -> [ProviderSettingsActionsDescriptor] {
guard Self.showsAntigravityMigrationAction(context: context) else { return [] }
return [
ProviderSettingsActionsDescriptor(
id: "gemini-antigravity-migration",
title: "Gemini CLI migration",
subtitle: GeminiConsumerTierMigration.deprecationError,
actions: [
ProviderSettingsActionDescriptor(
id: "gemini-enable-antigravity",
title: "Enable Antigravity provider",
style: .bordered,
isVisible: nil,
perform: {
context.settings.setProviderEnabled(
provider: .antigravity,
metadata: ProviderDescriptorRegistry.descriptor(for: .antigravity).metadata,
enabled: true)
await context.store.refreshProvider(.antigravity, allowDisabled: true)
}),
],
isVisible: nil),
]
}
@MainActor
func runLoginFlow(context: ProviderLoginContext) async -> Bool {
await context.controller.runGeminiLoginFlow()
return false
}
@MainActor
private static func showsAntigravityMigrationAction(context: ProviderSettingsContext) -> Bool {
context.store.geminiObservedConsumerTierDeprecation
}
}