upload file not working yet, creating just empty flow, maybe is related to the chat bug?

This commit is contained in:
anovazzi1 2023-02-26 17:04:40 -03:00
commit fa51eb3d3a
3 changed files with 29 additions and 9 deletions

View file

@ -1,11 +1,13 @@
import { Disclosure } from "@headlessui/react"; import { Disclosure } from "@headlessui/react";
import { ChevronLeftIcon } from "@heroicons/react/24/outline"; import { ArrowUpTrayIcon, ChevronLeftIcon } from "@heroicons/react/24/outline";
import { useContext } from "react"; import { useContext } from "react";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import { classNames } from "../../utils"; import { classNames } from "../../utils";
import { locationContext } from "../../contexts/locationContext"; import { locationContext } from "../../contexts/locationContext";
import { TabsContext } from "../../contexts/tabsContext";
export default function ExtraSidebar() { export default function ExtraSidebar() {
const {uploadFlow} = useContext(TabsContext)
const { const {
atual, atual,
isStackedOpen, isStackedOpen,
@ -20,7 +22,7 @@ export default function ExtraSidebar() {
isStackedOpen ? "w-60" : "w-0 " isStackedOpen ? "w-60" : "w-0 "
} flex-shrink-0 flex overflow-hidden flex-col border-r transition-all duration-500`} } flex-shrink-0 flex overflow-hidden flex-col border-r transition-all duration-500`}
> >
<div className="w-60 overflow-y-auto scrollbar-hide h-full"> <div className="w-60 overflow-y-auto scrollbar-hide h-full flex flex-col items-start">
<div className="flex pt-4 px-4 justify-between align-middle w-full"> <div className="flex pt-4 px-4 justify-between align-middle w-full">
<span className="text-gray-900 text-lg ml-2 font-semibold"> <span className="text-gray-900 text-lg ml-2 font-semibold">
{extraNavigation.title} {extraNavigation.title}
@ -32,7 +34,7 @@ export default function ExtraSidebar() {
<ChevronLeftIcon className="h-6 w-6"></ChevronLeftIcon> <ChevronLeftIcon className="h-6 w-6"></ChevronLeftIcon>
</button> </button>
</div> </div>
<div className="flex flex-grow flex-col"> <div className="flex flex-grow flex-col w-full">
{extraNavigation.options ? ( {extraNavigation.options ? (
<div className="p-4"> <div className="p-4">
<nav className="flex-1 space-y-1"> <nav className="flex-1 space-y-1">
@ -122,6 +124,10 @@ export default function ExtraSidebar() {
) : ( ) : (
extraComponent extraComponent
)} )}
{/* need to convert to multi stackbar logic */}
</div>
<div className="w-full flex content-center justify-center mt-auto mb-8">
<button onClick={()=>uploadFlow()} className="flex content-center justify-center py-3 px-6 border rounded-lg border-blue-500 text-blue-500 hover:text-white hover:bg-blue-500"><span>import flow</span><ArrowUpTrayIcon className=" ml-2 w-5 h-5"/> </button>
</div> </div>
</div> </div>
</aside> </aside>

View file

@ -10,7 +10,8 @@ type TabsContextType={
addFlow:(flowData?:any)=>void; addFlow:(flowData?:any)=>void;
updateFlow:(newFlow:flow)=>void; updateFlow:(newFlow:flow)=>void;
incrementNodeId:()=>number, incrementNodeId:()=>number,
downloadFlow:()=>void downloadFlow:()=>void,
uploadFlow:()=>void
} }
const TabsContextInitialValue = { const TabsContextInitialValue = {
@ -21,7 +22,8 @@ const TabsContextInitialValue = {
addFlow:(flowData?:any)=>{}, addFlow:(flowData?:any)=>{},
updateFlow:(newFlow:flow)=>{}, updateFlow:(newFlow:flow)=>{},
incrementNodeId:()=>0, incrementNodeId:()=>0,
downloadFlow:()=>{} downloadFlow:()=>{},
uploadFlow:()=>{}
} }
@ -62,6 +64,18 @@ export function TabsProvider({children}){
link.download = `${flows[tabIndex].name}.json` link.download = `${flows[tabIndex].name}.json`
link.click() link.click()
} }
function uploadFlow(){
const input = document.createElement('input')
input.type='file'
input.onchange = (e:Event)=>{
if((e.target as HTMLInputElement).files[0].type === "application/json"){
const file = (e.target as HTMLInputElement).files[0];
file.text().then(text =>addFlow(JSON.parse(text)))
}
}
input.click()
}
function removeFlow(id:string){ function removeFlow(id:string){
setFlows(prevState=>{ setFlows(prevState=>{
@ -82,8 +96,8 @@ export function TabsProvider({children}){
}); });
} }
function addFlow(flowData?:flow) { function addFlow(flowData?:flow) {
const data = flowData?flowData:null const data = flowData?.data?flowData:null
let newFlow: flow = {name: "flow"+id, id: id.toString(), data,chat:[]} let newFlow: flow = {name:flowData?flowData.name:"flow"+id, id: id.toString(), data,chat:flowData?flowData.chat:[]}
setId((old) => old+1); setId((old) => old+1);
setFlows(prevState => { setFlows(prevState => {
const newFlows = [...prevState, newFlow]; const newFlows = [...prevState, newFlow];
@ -106,7 +120,7 @@ export function TabsProvider({children}){
} }
return( return(
<TabsContext.Provider value={{tabIndex,setTabIndex,flows,incrementNodeId, removeFlow,addFlow,updateFlow, downloadFlow}}> <TabsContext.Provider value={{tabIndex,setTabIndex,flows,incrementNodeId, removeFlow,addFlow,updateFlow, downloadFlow, uploadFlow}}>
{children} {children}
</TabsContext.Provider> </TabsContext.Provider>
) )

View file

@ -49,7 +49,7 @@ export default function ExtraSidebar() {
} }
return ( return (
<div className="mt-4"> <div className="mt-4 w-full">
{Object.keys(data).map((d, i) => ( {Object.keys(data).map((d, i) => (
<DisclosureComponent <DisclosureComponent
key={i} key={i}