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>
    )
}