25 lines · 956 B · Swift
RawDownload
import CodexBarCore @MainActorextension StatusItemController {    func runCursorLoginFlow() async {        let cursorRunner = CursorLoginRunner(browserDetection: self.store.browserDetection)        let phaseHandler: @MainActor (CursorLoginRunner.Phase) -> Void = { [weak self] phase in            switch phase {            case .loading, .waitingLogin:                self?.loginPhase = .waitingBrowser            case .success, .failed:                self?.loginPhase = .idle            }        }        let result = await cursorRunner.run(onPhaseChange: phaseHandler)        guard !Task.isCancelled else { return }        self.loginPhase = .idle        self.presentCursorLoginResult(result)        let outcome = self.describe(result.outcome)        self.loginLogger.info("Cursor login", metadata: ["outcome": outcome])        if case .success = result.outcome {            self.postLoginNotification(for: .cursor)        }    }}