fix: save code in ide
ci-front / build (push) Successful in 2m11s

This commit is contained in:
nikita
2026-04-04 12:57:03 +03:00
parent 822f953698
commit 8175d7b3a5
+26 -6
View File
@@ -125,18 +125,23 @@ export const useIDEStore = create<IDEState>((set, get) => ({
// Выбор файла
selectFile: (node: FileNode) => {
if (node.type === "file") {
const { openFiles } = get();
if (!openFiles.find((f) => f.path === node.path)) {
set((state) => ({ openFiles: [...state.openFiles, node] }));
const { openFiles, files } = get();
// Берём актуальную версию из дерева файлов
const latestFile = files ? findNode(files, node.path || "") : null;
const fileToOpen =
latestFile && latestFile.type === "file" ? latestFile : node;
if (!openFiles.find((f) => f.path === fileToOpen.path)) {
set((state) => ({ openFiles: [...state.openFiles, fileToOpen] }));
}
set({ activeFile: node });
set({ activeFile: fileToOpen });
}
},
// Обновление содержимого файла
updateFileContent: (content: string) => {
const { activeFile } = get();
if (activeFile) {
const { activeFile, files } = get();
if (activeFile && files) {
const updatedFile = { ...activeFile, content };
set({ activeFile: updatedFile });
set((state) => ({
@@ -144,6 +149,21 @@ export const useIDEStore = create<IDEState>((set, get) => ({
f.path === activeFile.path ? updatedFile : f,
),
}));
// Обновляем также в дереве файлов
const updateFileInTree = (node: FileNode): FileNode => {
if (node.path === activeFile.path) {
return updatedFile;
}
if (node.children) {
return {
...node,
children: node.children.map((child) => updateFileInTree(child)),
};
}
return node;
};
set({ files: updateFileInTree(files) });
}
},