File size: 1,870 Bytes
8d3471e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | import { useI18n } from '../../i18n'
import { useVercelSyncState } from './useVercelSyncState'
import VercelSyncForm from './VercelSyncForm'
import VercelSyncStatus from './VercelSyncStatus'
import VercelGuide from './VercelGuide'
export default function VercelSyncContainer({ onMessage, authFetch, isVercel = false, config = null }) {
const { t } = useI18n()
const apiFetch = authFetch || fetch
const {
vercelToken,
setVercelToken,
projectId,
setProjectId,
teamId,
setTeamId,
saveCredentials,
setSaveCredentials,
loading,
result,
preconfig,
syncStatus,
pollPaused,
pollFailures,
handleManualRefresh,
handleSync,
} = useVercelSyncState({
apiFetch,
onMessage,
t,
isVercel,
config,
})
return (
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8 max-w-5xl mx-auto h-[calc(100vh-140px)]">
<VercelSyncForm
t={t}
syncStatus={syncStatus}
pollPaused={pollPaused}
pollFailures={pollFailures}
onManualRefresh={handleManualRefresh}
preconfig={preconfig}
vercelToken={vercelToken}
setVercelToken={setVercelToken}
projectId={projectId}
setProjectId={setProjectId}
teamId={teamId}
setTeamId={setTeamId}
saveCredentials={saveCredentials}
setSaveCredentials={setSaveCredentials}
loading={loading}
onSync={handleSync}
/>
<div className="space-y-6">
<VercelSyncStatus t={t} result={result} />
<VercelGuide t={t} />
</div>
</div>
)
}
|