feat(admin): remember Vercel sync credentials

This commit is contained in:
NgoQuocViet2001
2026-05-04 21:06:26 +07:00
parent f413d42b0c
commit 76884c0d94
18 changed files with 321 additions and 20 deletions

View File

@@ -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}
/>

View File

@@ -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">

View File

@@ -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,