From 56805b0785d52b6547538dfb9f2fa75de673e2a4 Mon Sep 17 00:00:00 2001 From: zhongliang02 Date: Thu, 5 Feb 2026 14:14:02 +0800 Subject: [PATCH] Allow directly entering GitHub personal access token. --- .../GitHub Sheets/AddGitHubPipelineSheet.swift | 12 ++++++++++-- .../GitHub Sheets/GitHubAuthenticator.swift | 6 ++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CCMenu/Source/Pipeline Window/GitHub Sheets/AddGitHubPipelineSheet.swift b/CCMenu/Source/Pipeline Window/GitHub Sheets/AddGitHubPipelineSheet.swift index 71d34fe..eb60090 100644 --- a/CCMenu/Source/Pipeline Window/GitHub Sheets/AddGitHubPipelineSheet.swift +++ b/CCMenu/Source/Pipeline Window/GitHub Sheets/AddGitHubPipelineSheet.swift @@ -18,6 +18,7 @@ struct AddGitHubPipelineSheet: View { @StateObject private var branch = DebouncedText() @StateObject private var branchList = GitHubBranchList() @StateObject private var builder = GitHubPipelineBuilder() + @State private var tokenInput: String = "" var body: some View { VStack { @@ -29,10 +30,15 @@ struct AddGitHubPipelineSheet: View { .padding(.bottom) Form { HStack { - TextField("Authentication:", text: $authenticator.tokenDescription) + TextField("Authentication:", text: $tokenInput, prompt: Text("paste token or sign in")) .accessibilityIdentifier("Token field") .truncationMode(.tail) - .disabled(true) + .onChange(of: tokenInput) { + authenticator.setToken(tokenInput) + } + .onSubmit { + authenticator.setToken(tokenInput) + } if authenticator.isWaitingForToken { Button("Cancel") { authenticator.cancelSignIn() @@ -42,6 +48,7 @@ struct AddGitHubPipelineSheet: View { Task { if await authenticator.signInAtGitHub() { await authenticator.waitForToken() + tokenInput = authenticator.token ?? "" } } } @@ -152,6 +159,7 @@ struct AddGitHubPipelineSheet: View { .padding() .onAppear() { authenticator.fetchTokenFromKeychain() + tokenInput = authenticator.token ?? "" } .onDisappear() { authenticator.storeTokenInKeychain() diff --git a/CCMenu/Source/Pipeline Window/GitHub Sheets/GitHubAuthenticator.swift b/CCMenu/Source/Pipeline Window/GitHub Sheets/GitHubAuthenticator.swift index b450282..1ba46af 100644 --- a/CCMenu/Source/Pipeline Window/GitHub Sheets/GitHubAuthenticator.swift +++ b/CCMenu/Source/Pipeline Window/GitHub Sheets/GitHubAuthenticator.swift @@ -119,6 +119,12 @@ class GitHubAuthenticator: ObservableObject { tokenDescription = token ?? "" } + func setToken(_ newToken: String) { + let trimmed = newToken.trimmingCharacters(in: .whitespacesAndNewlines) + token = trimmed.isEmpty ? nil : trimmed + tokenDescription = token ?? "" + } + func openApplicationsOnWebsite() { NSWorkspace.shared.open(GitHubAPI.applicationsUrl()) }