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

66 lines
2.3 KiB
Swift

import CodexBarCore
import Foundation
extension SettingsStore {
var antigravityUsageDataSource: AntigravityUsageDataSource {
get {
let source = self.configSnapshot.providerConfig(for: .antigravity)?.source
return Self.antigravityUsageDataSource(from: source)
}
set {
let source: ProviderSourceMode? = switch newValue {
case .auto: .auto
case .oauth: .oauth
case .cli: .cli
}
self.updateProviderConfig(provider: .antigravity) { entry in
entry.source = source
}
self.logProviderModeChange(provider: .antigravity, field: "usageSource", value: newValue.rawValue)
}
}
func upsertAntigravityOAuthAccount(_ credentials: AntigravityOAuthCredentials) {
guard let token = try? AntigravityOAuthCredentialsStore.tokenAccountValue(for: credentials) else { return }
let trimmedEmail = credentials.email?.trimmingCharacters(in: .whitespacesAndNewlines)
let email = (trimmedEmail?.isEmpty == false) ? trimmedEmail : nil
let data = self.tokenAccountsData(for: .antigravity)
let label = email ?? "Google Account \((data?.accounts.count ?? 0) + 1)"
if let email,
let data,
let index = data.accounts.firstIndex(where: { account in
account.externalIdentifier == email
})
{
let account = data.accounts[index]
self.updateTokenAccount(
provider: .antigravity,
accountID: account.id,
label: label,
token: token,
externalIdentifier: .some(email))
self.setActiveTokenAccountIndex(index, for: .antigravity)
} else {
self.addTokenAccount(
provider: .antigravity,
label: label,
token: token,
externalIdentifier: email)
}
}
}
extension SettingsStore {
private static func antigravityUsageDataSource(from source: ProviderSourceMode?) -> AntigravityUsageDataSource {
guard let source else { return .auto }
switch source {
case .auto, .web, .api:
return .auto
case .oauth:
return .oauth
case .cli:
return .cli
}
}
}