import CodexBarCoreimport Foundation@MainActorextension StatusItemController { func runJetBrainsLoginFlow() async { self.loginPhase = .idle let detectedIDEs = JetBrainsIDEDetector.detectInstalledIDEs(includeMissingQuota: true) if detectedIDEs.isEmpty { let message = [ "Install a JetBrains IDE with AI Assistant enabled, then refresh CodexBar.", "Alternatively, set a custom path in Settings.", ].joined(separator: " ") self.presentLoginAlert( title: "No JetBrains IDE detected", message: message) } else { let ideNames = detectedIDEs.prefix(3).map(\.displayName).joined(separator: ", ") let hasQuotaFile = !JetBrainsIDEDetector.detectInstalledIDEs().isEmpty let message = hasQuotaFile ? String(format: L("jetbrains_detected_select"), ideNames) : String(format: L("jetbrains_detected_generate"), ideNames) self.presentLoginAlert( title: L("JetBrains AI is ready"), message: message) } }}
import CodexBarCore
import Foundation
@MainActor
extension StatusItemController {
func runJetBrainsLoginFlow() async {
self.loginPhase = .idle
let detectedIDEs = JetBrainsIDEDetector.detectInstalledIDEs(includeMissingQuota: true)
if detectedIDEs.isEmpty {
let message = [
"Install a JetBrains IDE with AI Assistant enabled, then refresh CodexBar.",
"Alternatively, set a custom path in Settings.",
].joined(separator: " ")
self.presentLoginAlert(
title: "No JetBrains IDE detected",
message: message)
} else {
let ideNames = detectedIDEs.prefix(3).map(\.displayName).joined(separator: ", ")
let hasQuotaFile = !JetBrainsIDEDetector.detectInstalledIDEs().isEmpty
let message = hasQuotaFile
? String(format: L("jetbrains_detected_select"), ideNames)
: String(format: L("jetbrains_detected_generate"), ideNames)
self.presentLoginAlert(
title: L("JetBrains AI is ready"),
message: message)
}
}
}