mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-12 12:17:47 +08:00
feat(admin): remember Vercel sync credentials
This commit is contained in:
@@ -15,6 +15,8 @@ export default function VercelSyncContainer({ onMessage, authFetch, isVercel = f
|
||||
setProjectId,
|
||||
teamId,
|
||||
setTeamId,
|
||||
saveCredentials,
|
||||
setSaveCredentials,
|
||||
loading,
|
||||
result,
|
||||
preconfig,
|
||||
@@ -46,6 +48,8 @@ export default function VercelSyncContainer({ onMessage, authFetch, isVercel = f
|
||||
setProjectId={setProjectId}
|
||||
teamId={teamId}
|
||||
setTeamId={setTeamId}
|
||||
saveCredentials={saveCredentials}
|
||||
setSaveCredentials={setSaveCredentials}
|
||||
loading={loading}
|
||||
onSync={handleSync}
|
||||
/>
|
||||
|
||||
@@ -14,6 +14,8 @@ export default function VercelSyncForm({
|
||||
setProjectId,
|
||||
teamId,
|
||||
setTeamId,
|
||||
saveCredentials,
|
||||
setSaveCredentials,
|
||||
loading,
|
||||
onSync,
|
||||
}) {
|
||||
@@ -124,6 +126,19 @@ export default function VercelSyncForm({
|
||||
onChange={e => setTeamId(e.target.value)}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<label className="flex items-start gap-3 text-sm">
|
||||
<input
|
||||
type="checkbox"
|
||||
className="mt-1 h-4 w-4 rounded border-border text-primary focus:ring-ring"
|
||||
checked={saveCredentials}
|
||||
onChange={e => setSaveCredentials(e.target.checked)}
|
||||
/>
|
||||
<span className="space-y-1">
|
||||
<span className="block font-medium">{t('vercel.saveCredentials')}</span>
|
||||
<span className="block text-xs text-muted-foreground">{t('vercel.saveCredentialsHint')}</span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div className="pt-4">
|
||||
|
||||
@@ -12,6 +12,7 @@ export function useVercelSyncState({ apiFetch, onMessage, t, isVercel = false })
|
||||
const [vercelToken, setVercelToken] = useState('')
|
||||
const [projectId, setProjectId] = useState('')
|
||||
const [teamId, setTeamId] = useState('')
|
||||
const [saveCredentials, setSaveCredentials] = useState(true)
|
||||
const [loading, setLoading] = useState(false)
|
||||
const [result, setResult] = useState(null)
|
||||
const [preconfig, setPreconfig] = useState(null)
|
||||
@@ -117,6 +118,7 @@ export function useVercelSyncState({ apiFetch, onMessage, t, isVercel = false })
|
||||
vercel_token: tokenToUse,
|
||||
project_id: projectId,
|
||||
team_id: teamId || undefined,
|
||||
save_credentials: saveCredentials,
|
||||
}),
|
||||
})
|
||||
const data = await res.json()
|
||||
@@ -133,7 +135,7 @@ export function useVercelSyncState({ apiFetch, onMessage, t, isVercel = false })
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
}, [apiFetch, fetchSyncStatus, onMessage, preconfig?.has_token, projectId, t, teamId, vercelToken])
|
||||
}, [apiFetch, fetchSyncStatus, onMessage, preconfig?.has_token, projectId, saveCredentials, t, teamId, vercelToken])
|
||||
|
||||
return {
|
||||
vercelToken,
|
||||
@@ -142,6 +144,8 @@ export function useVercelSyncState({ apiFetch, onMessage, t, isVercel = false })
|
||||
setProjectId,
|
||||
teamId,
|
||||
setTeamId,
|
||||
saveCredentials,
|
||||
setSaveCredentials,
|
||||
loading,
|
||||
result,
|
||||
preconfig,
|
||||
|
||||
@@ -462,6 +462,8 @@
|
||||
"projectIdHint": "Find it in Project Settings → General.",
|
||||
"teamIdLabel": "Team ID",
|
||||
"optional": "optional",
|
||||
"saveCredentials": "Remember Vercel credentials",
|
||||
"saveCredentialsHint": "Save the token, project ID, and team ID for the next sync.",
|
||||
"syncing": "Syncing...",
|
||||
"syncRedeploy": "Sync & redeploy",
|
||||
"redeployHint": "This triggers a Vercel redeploy and usually takes 30–60 seconds.",
|
||||
|
||||
@@ -462,6 +462,8 @@
|
||||
"projectIdHint": "可在项目设置 (Project Settings) → 常规 (General) 中找到",
|
||||
"teamIdLabel": "团队 ID",
|
||||
"optional": "可选",
|
||||
"saveCredentials": "记住 Vercel 凭据",
|
||||
"saveCredentialsHint": "保存访问令牌、项目 ID 和团队 ID,供下次同步直接复用。",
|
||||
"syncing": "正在同步...",
|
||||
"syncRedeploy": "同步并重新部署",
|
||||
"redeployHint": "这将触发 Vercel 的重新部署,大约需要 30-60 秒。",
|
||||
|
||||
Reference in New Issue
Block a user