支持快捷打开github凭据生成页面

This commit is contained in:
itpkcn@gmail.com
2026-03-21 14:15:16 +08:00
parent 24f0b580ce
commit 9e21ac439b
12 changed files with 93 additions and 18 deletions

View File

@@ -1,7 +1,8 @@
"use client"
import { useCallback, useState } from "react"
import { Eye, EyeOff, Loader2 } from "lucide-react"
import { ExternalLink, Eye, EyeOff, Loader2 } from "lucide-react"
import { openUrl } from "@tauri-apps/plugin-opener"
import { useTranslations } from "next-intl"
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
@@ -37,6 +38,20 @@ export function AddGitHubAccountDialog({
const [validating, setValidating] = useState(false)
const [error, setError] = useState<string | null>(null)
const handleGenerateToken = useCallback(async () => {
const base = serverUrl.trim().replace(/\/+$/, "") || "https://github.com"
const params = new URLSearchParams({
description: "codeg",
scopes: "repo,read:org,workflow,gist,read:user,user:email",
})
const url = `${base}/settings/tokens/new?${params.toString()}`
try {
await openUrl(url)
} catch {
// fallback: ignore if opener fails
}
}, [serverUrl])
const resetForm = useCallback(() => {
setServerUrl("https://github.com")
setToken("")
@@ -117,9 +132,21 @@ export function AddGitHubAccountDialog({
</div>
<div className="space-y-2">
<label className="text-xs font-medium text-muted-foreground">
{t("token")}
</label>
<div className="flex items-center justify-between">
<label className="text-xs font-medium text-muted-foreground">
{t("token")}
</label>
<Button
type="button"
variant="link"
size="xs"
className="h-auto p-0 text-xs"
onClick={handleGenerateToken}
>
{t("generateToken")}
<ExternalLink className="ml-1 h-3 w-3" />
</Button>
</div>
<div className="relative">
<Input
type={showToken ? "text" : "password"}