@@ -2,19 +2,25 @@ import { useState, useCallback } from 'react';
22import toast from 'react-hot-toast' ;
33import { apiFetch } from '../utils/apiClients' ;
44import { providerManager } from '../providers' ;
5- import { useBlockStore , useStackingStore } from '../stores' ;
5+ import { useBlockStore , useStackingStore , useUIStore } from '../stores' ;
66
77export const useDeployment = ( projectId : string | undefined ) => {
88 const { droppedBlocks } = useBlockStore ( ) ;
99 const { deriveConnectionsFromStacking } = useStackingStore ( ) ;
10+ const generatedCode = useUIStore ( ( state ) => state . generatedCode ) ;
1011
1112 const [ loadingStatus , setLoadingStatus ] = useState < null | 'validating' | 'deploying' > ( null ) ;
1213
1314 // Terraform 코드 생성
1415 const buildTerraformCode = useCallback ( ( ) : string => {
16+ // 사용자가 코드 에디터에서 수정한 경우 그 코드를 우선 사용
17+ if ( generatedCode && generatedCode . trim ( ) !== '' ) {
18+ return generatedCode ;
19+ }
20+
21+ // 수정된 코드가 없으면 블록으로부터 새로 생성
1522 const derivedConnections = deriveConnectionsFromStacking ( droppedBlocks ) ;
1623
17- // 현재 프로바이더를 사용한 코드 생성
1824 const currentProvider = providerManager . getCurrentProvider ( ) ;
1925 if ( currentProvider ) {
2026 const cloudBlocks = droppedBlocks . map ( block => ( {
@@ -34,7 +40,7 @@ export const useDeployment = (projectId: string | undefined) => {
3440 console . warn ( '⚠️ [Deploy] No provider found' ) ;
3541 return `# 프로바이더가 선택되지 않았습니다.` ;
3642 }
37- } , [ droppedBlocks , deriveConnectionsFromStacking ] ) ;
43+ } , [ droppedBlocks , deriveConnectionsFromStacking , generatedCode ] ) ;
3844
3945 // 프로젝트 배포
4046 const handleDeployProject = useCallback ( async ( ) => {
0 commit comments