Skip to content

Commit cf110ba

Browse files
committed
fix: 테라폼 코드 수정 반영
1 parent 6a3d6b1 commit cf110ba

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

src/components/layout/CodeEditor.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ interface CodeEditorProps {
3838
export function CodeEditor({ }: CodeEditorProps) {
3939
// Zustand에서 생성된 코드 가져오기
4040
const generatedCode = useUIStore((state) => state.generatedCode);
41+
const setGeneratedCode = useUIStore((state) => state.setGeneratedCode);
4142

4243
const [code, setCode] = useState(defaultHCLCode);
4344
const [isLoading, setIsLoading] = useState(true);
@@ -49,6 +50,14 @@ export function CodeEditor({ }: CodeEditorProps) {
4950
}
5051
}, [generatedCode]);
5152

53+
// 코드 변경 시 Zustand에 저장
54+
const handleCodeChange = (value: string | undefined) => {
55+
if (value !== undefined) {
56+
setCode(value);
57+
setGeneratedCode(value); // 수정된 코드를 Zustand에 저장
58+
}
59+
};
60+
5261
// 에디터 크기 조정을 위한 useEffect
5362
useEffect(() => {
5463
const handleResize = () => {
@@ -168,7 +177,7 @@ export function CodeEditor({ }: CodeEditorProps) {
168177
width="100%"
169178
defaultLanguage="hcl"
170179
value={code}
171-
onChange={(value) => setCode(value || "")}
180+
onChange={handleCodeChange}
172181
onMount={handleEditorDidMount}
173182
theme="vs-dark"
174183
loading={

src/hooks/useDeployment.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,25 @@ import { useState, useCallback } from 'react';
22
import toast from 'react-hot-toast';
33
import { apiFetch } from '../utils/apiClients';
44
import { providerManager } from '../providers';
5-
import { useBlockStore, useStackingStore } from '../stores';
5+
import { useBlockStore, useStackingStore, useUIStore } from '../stores';
66

77
export 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

Comments
 (0)