diff --git a/src/components/DrawBot.jsx b/src/components/DrawBot.jsx new file mode 100644 index 0000000..50d0fd3 --- /dev/null +++ b/src/components/DrawBot.jsx @@ -0,0 +1,47 @@ +import React, { useContext, useState } from "react"; +import { Button, Input, Avatar } from "@douyinfe/semi-ui"; +import { IconSend } from "@douyinfe/semi-icons"; +import { BotMessageContext } from "../pages/Editor"; +import botIcon from "../assets/bot.png"; + +export default function DrawBot() { + const [message, setMessage] = useState(""); + const { botMessages } = useContext(BotMessageContext); + + return ( +
+
+ {botMessages.map((m, i) => ( +
+ + {m.sender === "bot" ? "drawBOT" : "You"} + +
+
+ {m.sender === "bot" ? "drawBOT" : "You"} +
+
{m.message}
+
+
+ ))} +
+
{ + e.preventDefault(); + + setMessage(""); + }} + className="flex mt-2" + > + setMessage(v)} + placeholder="Message" + value={message} + autoComplete="off" + className="me-2" + > + +
+
+ ); +} diff --git a/src/components/sidebar.jsx b/src/components/sidebar.jsx index 9b6a040..b11f912 100644 --- a/src/components/sidebar.jsx +++ b/src/components/sidebar.jsx @@ -7,12 +7,14 @@ import timeLineDark from "../assets/process_dark.png"; import todo from "../assets/calendar.png"; import { Tooltip, SideSheet, List, Badge } from "@douyinfe/semi-ui"; import { + BotMessageContext, MessageContext, SettingsContext, UndoRedoContext, } from "../pages/Editor"; import Todo from "./Todo"; import Chat from "./Chat"; +import DrawBot from "./DrawBot"; export default function Sidebar() { const SidesheetType = { @@ -26,9 +28,12 @@ export default function Sidebar() { const { undoStack } = useContext(UndoRedoContext); const { messages } = useContext(MessageContext); const { settings } = useContext(SettingsContext); + const { botMessages } = useContext(BotMessageContext); const [sidesheet, setSidesheet] = useState(SidesheetType.NONE); const [seen, setSeen] = useState(0); + const [seenBot, setSeenBot] = useState(0); const [count, setCount] = useState(messages.length - seen); + const [botCount, setBotCount] = useState(botMessages.length - seenBot); const getTitle = (type) => { switch (type) { @@ -40,21 +45,28 @@ export default function Sidebar() { className="w-7" alt="chat icon" /> -
Timeline
+
Timeline
); case SidesheetType.CHAT: return (
chat icon -
Chat
+
Chat
); case SidesheetType.TODO: return (
todo icon -
To-do list
+
To-do list
+
+ ); + case SidesheetType.BOT: + return ( +
+ todo icon +
drawBOT
); default: @@ -70,6 +82,8 @@ export default function Sidebar() { return ; case SidesheetType.CHAT: return ; + case SidesheetType.BOT: + return ; default: break; } @@ -77,9 +91,20 @@ export default function Sidebar() { useEffect(() => { if (sidesheet !== SidesheetType.CHAT) { - setCount((c) => messages.length - seen); + setCount(messages.length - seen); } - }, [messages.length, seen, sidesheet, SidesheetType.CHAT]); + if (sidesheet !== SidesheetType.BOT) { + setBotCount(botMessages.length - seenBot); + } + }, [ + sidesheet, + seen, + messages.length, + SidesheetType.CHAT, + seenBot, + botMessages.length, + SidesheetType.BOT, + ]); return ( <> @@ -126,17 +151,33 @@ export default function Sidebar() { /> - - + + + + { + if (sidesheet === SidesheetType.CHAT) { + setSeen(messages.length); + } else if (sidesheet === SidesheetType.BOT) { + setSeenBot(botMessages.length); + } setSidesheet(SidesheetType.NONE); - setSeen(messages.length); }} width={340} title={getTitle(sidesheet)} diff --git a/src/pages/editor.jsx b/src/pages/editor.jsx index 0429967..00f5d15 100644 --- a/src/pages/editor.jsx +++ b/src/pages/editor.jsx @@ -24,6 +24,7 @@ export const UndoRedoContext = createContext(); export const SelectContext = createContext(); export const TaskContext = createContext(); export const MessageContext = createContext(); +export const BotMessageContext = createContext(); export const TypeContext = createContext(); export default function Editor(props) { @@ -57,6 +58,9 @@ export default function Editor(props) { }); const [tasks, setTasks] = useState([]); const [messages, setMessages] = useState([]); + const [botMessages, setBotMessages] = useState([ + { sender: "bot", message: "Hey there! How can I help you?" }, + ]); const [undoStack, setUndoStack] = useState([]); const [redoStack, setRedoStack] = useState([]); const [selectedElement, setSelectedElement] = useState({ @@ -579,7 +583,11 @@ export default function Editor(props) { - + + + )}