@@ -2,6 +2,8 @@ import React from "react";
|
||||
import type { FileNode } from "../types";
|
||||
import { FilePickerItem } from "./FilePickerItem";
|
||||
import { useFilePickerStore } from "../store/useFilePickerStore";
|
||||
import { TerminalOutput } from "@/modules/terminal";
|
||||
import { useTerminalStore } from "@/modules/terminal/store/useTerminalStore";
|
||||
|
||||
interface FilePickerProps {
|
||||
files: FileNode;
|
||||
@@ -55,6 +57,9 @@ const FilePickerTree: React.FC<{
|
||||
};
|
||||
|
||||
export const FilePicker: React.FC<FilePickerProps> = ({ files, onRun }) => {
|
||||
const terminalOpen = useTerminalStore((s) => s.isOpen);
|
||||
const jobs = useTerminalStore((s) => s.jobs);
|
||||
|
||||
return (
|
||||
<div
|
||||
style={{
|
||||
@@ -63,6 +68,13 @@ export const FilePicker: React.FC<FilePickerProps> = ({ files, onRun }) => {
|
||||
backgroundColor: "var(--bg-primary)",
|
||||
}}
|
||||
>
|
||||
{/* Terminal — сверху, над списком файлов */}
|
||||
{terminalOpen && jobs.length > 0 && (
|
||||
<div style={{ height: 250 }}>
|
||||
<TerminalOutput />
|
||||
</div>
|
||||
)}
|
||||
|
||||
{(files.children || []).map((child, idx) => (
|
||||
<FilePickerTree key={idx} node={child} level={0} onRun={onRun} />
|
||||
))}
|
||||
|
||||
@@ -60,21 +60,14 @@ export const RunScriptModal: React.FC<RunScriptModalProps> = ({
|
||||
// 4. Ждём завершения по id
|
||||
const jobResult = await scriptsApi.waitJob(runResult.id);
|
||||
|
||||
// 5. Обновляем джоб
|
||||
addJob({
|
||||
id: jobResult.id,
|
||||
scriptPath,
|
||||
// 5. Обновляем существующий джоб (не создаём новый!)
|
||||
const terminalStore = useTerminalStore.getState();
|
||||
terminalStore.updateJob(runResult.id, {
|
||||
command: jobResult.command,
|
||||
stdin: jobResult.stdin,
|
||||
});
|
||||
|
||||
// Обновляем с финальным статусом
|
||||
const terminalStore = useTerminalStore.getState();
|
||||
terminalStore.updateJob(jobResult.id, {
|
||||
status: jobResult.status,
|
||||
stdout: jobResult.stdout,
|
||||
stderr: jobResult.stderr,
|
||||
stdin: jobResult.stdin,
|
||||
isRunning: false,
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user