Passed data through context to get form keys

This commit is contained in:
Lucas Oliveira 2023-06-27 16:57:21 -03:00
commit d1a58397da
5 changed files with 19 additions and 1 deletions

View file

@ -10,6 +10,7 @@ import { alertContext } from "../../../contexts/alertContext";
import { postBuildInit } from "../../../controllers/API"; import { postBuildInit } from "../../../controllers/API";
import RadialProgressComponent from "../../RadialProgress"; import RadialProgressComponent from "../../RadialProgress";
import { TabsContext } from "../../../contexts/tabsContext";
export default function BuildTrigger({ export default function BuildTrigger({
open, open,
@ -24,6 +25,7 @@ export default function BuildTrigger({
}) { }) {
const { updateSSEData, isBuilding, setIsBuilding, sseData } = useSSE(); const { updateSSEData, isBuilding, setIsBuilding, sseData } = useSSE();
const { reactFlowInstance } = useContext(typesContext); const { reactFlowInstance } = useContext(typesContext);
const { setTabsState } = useContext(TabsContext);
const { setErrorData, setSuccessData } = useContext(alertContext); const { setErrorData, setSuccessData } = useContext(alertContext);
const [isIconTouched, setIsIconTouched] = useState(false); const [isIconTouched, setIsIconTouched] = useState(false);
const eventClick = isBuilding ? "pointer-events-none" : ""; const eventClick = isBuilding ? "pointer-events-none" : "";
@ -87,6 +89,17 @@ export default function BuildTrigger({
} else if (parsedData.log) { } else if (parsedData.log) {
// If the event is a log, log it // If the event is a log, log it
setSuccessData({ title: parsedData.log }); setSuccessData({ title: parsedData.log });
} else if (parsedData.input_keys) {
setTabsState((old) => {
return {
...old,
[flowId]: {
...old[flowId],
formKeysData: parsedData,
}
};
})
} else { } else {
// Otherwise, process the data // Otherwise, process the data
const isValid = processStreamResult(parsedData); const isValid = processStreamResult(parsedData);

View file

@ -72,7 +72,7 @@ export default function Chat({ flow }: ChatType) {
isBuilt={isBuilt} isBuilt={isBuilt}
/> />
<ChatModal key={flow.id} flow={flow} open={open} setOpen={setOpen} /> <ChatModal key={flow.id} flow={flow} open={open} setOpen={setOpen} />
<FormModal key={flow.id} flow={flow} open={openForm} setOpen={setOpenForm} /> <FormModal key={flow.id + "form"} flow={flow} open={openForm} setOpen={setOpenForm} />
<ChatTrigger open={open || openForm} setOpen={setOpen} isBuilt={isBuilt} /> <ChatTrigger open={open || openForm} setOpen={setOpen} isBuilt={isBuilt} />
<FormTrigger open={open || openForm} setOpen={setOpenForm} isBuilt={isBuilt} /> <FormTrigger open={open || openForm} setOpen={setOpenForm} isBuilt={isBuilt} />
</div> </div>

View file

@ -597,6 +597,7 @@ export function TabsProvider({ children }: { children: ReactNode }) {
return { return {
...prev, ...prev,
[tabId]: { [tabId]: {
...prev[tabId],
isPending: false, isPending: false,
}, },
}; };

View file

@ -18,6 +18,7 @@ import { postValidateCode } from "../../controllers/API";
import { Button } from "../../components/ui/button"; import { Button } from "../../components/ui/button";
import { Input } from "../../components/ui/input"; import { Input } from "../../components/ui/input";
import { Label } from "../../components/ui/label"; import { Label } from "../../components/ui/label";
import { TabsContext } from "../../contexts/tabsContext";
export default function FormModal({ export default function FormModal({
flow, flow,
@ -32,6 +33,7 @@ export default function FormModal({
const [chatHistory, setChatHistory] = useState<ChatMessageType[]>([]); const [chatHistory, setChatHistory] = useState<ChatMessageType[]>([]);
const { reactFlowInstance } = useContext(typesContext); const { reactFlowInstance } = useContext(typesContext);
const { setErrorData, setNoticeData } = useContext(alertContext); const { setErrorData, setNoticeData } = useContext(alertContext);
const { tabsState } = useContext(TabsContext);
const ws = useRef<WebSocket | null>(null); const ws = useRef<WebSocket | null>(null);
const [lockChat, setLockChat] = useState(false); const [lockChat, setLockChat] = useState(false);
const isOpen = useRef(open); const isOpen = useRef(open);
@ -49,6 +51,7 @@ export default function FormModal({
}, [open]); }, [open]);
useEffect(() => { useEffect(() => {
id.current = flow.id; id.current = flow.id;
console.log(tabsState[flow.id])
}, [flow.id]); }, [flow.id]);
var isStream = false; var isStream = false;

View file

@ -33,5 +33,6 @@ export type TabsContextType = {
export type TabsState = { export type TabsState = {
[key: string]: { [key: string]: {
isPending: boolean; isPending: boolean;
formKeysData: {input_keys?: Array<string>, memory_keys?: Array<string>};
}; };
}; };