diff --git a/src/components/ControlPanel.jsx b/src/components/ControlPanel.jsx index 02000f7..ad1342e 100644 --- a/src/components/ControlPanel.jsx +++ b/src/components/ControlPanel.jsx @@ -30,6 +30,7 @@ import { Upload, Banner, Toast, + TagInput, } from "@douyinfe/semi-ui"; import { toPng, toJpeg, toSvg } from "html-to-image"; import { saveAs } from "file-saver"; @@ -63,6 +64,8 @@ import { Editor } from "@monaco-editor/react"; import { db } from "../data/db"; import { useLiveQuery } from "dexie-react-hooks"; import { socket } from "../data/socket"; +import { useCookies } from "react-cookie"; +import axios from "axios"; export default function ControlPanel({ diagramId, @@ -82,6 +85,7 @@ export default function ControlPanel({ OPEN: 5, SAVEAS: 6, NEW: 7, + SHARE: 8, }; const STATUS = { NONE: 0, @@ -106,6 +110,8 @@ export default function ControlPanel({ message: "", }); const [data, setData] = useState(null); + const [cookies] = useCookies(["logged_in"]); + const [addPeople, setAddPeople] = useState([]) const { layout, setLayout } = useContext(LayoutContext); const { settings, setSettings } = useContext(SettingsContext); const { @@ -796,7 +802,7 @@ export default function ControlPanel({ }, }, Share: { - function: () => { }, + function: () => setVisible(MODAL.SHARE), }, Rename: { function: () => { @@ -1209,6 +1215,8 @@ export default function ControlPanel({ return "Save as"; case MODAL.NEW: return "New diagram"; + case MODAL.SHARE: + return "Share \"" + title + '"' default: return ""; } @@ -1234,7 +1242,7 @@ export default function ControlPanel({ } }; - const getModalOnOk = () => { + const getModalOnOk = async () => { switch (visible) { case MODAL.IMG: saveAs( @@ -1284,6 +1292,29 @@ export default function ControlPanel({ setVisible(MODAL.NONE); createNewDiagram(selectedTemplateId); return; + case MODAL.SHARE: + await axios + .post( + `${import.meta.env.VITE_API_BACKEND_URL}/share`, + { + people: addPeople, + diagram: { + name: title, + tables: tables, + references: relationships, + types: types, + notes: notes, + areas: areas, + } + }, + { withCredentials: true } + ) + .then((res) => { + console.log(res) + }) + .catch((e) => console.log(e)); + setVisible(MODAL.NONE) + return; default: setVisible(MODAL.NONE); return; @@ -1551,6 +1582,31 @@ export default function ControlPanel({ ); } + case MODAL.SHARE: + if (cookies.logged_in) { + return