add badge for new messages
This commit is contained in:
parent
4181ef4c74
commit
8a17540d31
@ -1,11 +1,11 @@
|
|||||||
import React, { useContext, useState } from "react";
|
import React, { useContext, useEffect, useState } from "react";
|
||||||
import chatIcon from "../assets/chat.png";
|
import chatIcon from "../assets/chat.png";
|
||||||
import botIcon from "../assets/bot.png";
|
import botIcon from "../assets/bot.png";
|
||||||
import teamIcon from "../assets/group.png";
|
import teamIcon from "../assets/group.png";
|
||||||
import timeLine from "../assets/process.png";
|
import timeLine from "../assets/process.png";
|
||||||
import todo from "../assets/calendar.png";
|
import todo from "../assets/calendar.png";
|
||||||
import { Tooltip, SideSheet, List } from "@douyinfe/semi-ui";
|
import { Tooltip, SideSheet, List, Badge } from "@douyinfe/semi-ui";
|
||||||
import { UndoRedoContext } from "../pages/editor";
|
import { MessageContext, UndoRedoContext } from "../pages/editor";
|
||||||
import Todo from "./todo";
|
import Todo from "./todo";
|
||||||
import Chat from "./chat";
|
import Chat from "./chat";
|
||||||
|
|
||||||
@ -19,7 +19,10 @@ export default function Sidebar() {
|
|||||||
BOT: 5,
|
BOT: 5,
|
||||||
};
|
};
|
||||||
const { undoStack } = useContext(UndoRedoContext);
|
const { undoStack } = useContext(UndoRedoContext);
|
||||||
|
const { messages } = useContext(MessageContext);
|
||||||
const [sidesheet, setSidesheet] = useState(SidesheetType.NONE);
|
const [sidesheet, setSidesheet] = useState(SidesheetType.NONE);
|
||||||
|
const [seen, setSeen] = useState(0)
|
||||||
|
const [count, setCount] = useState(messages.length-seen);
|
||||||
|
|
||||||
const getTitle = (type) => {
|
const getTitle = (type) => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@ -62,16 +65,31 @@ export default function Sidebar() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (sidesheet !== SidesheetType.CHAT) {
|
||||||
|
setCount((c) => messages.length - seen);
|
||||||
|
}
|
||||||
|
}, [messages.length, seen, sidesheet, SidesheetType.CHAT]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="px-3 py-3 shadow-lg h-full select-none">
|
<div className="ps-3 pe-4 py-4 shadow-lg h-full select-none">
|
||||||
<Tooltip content="Chat">
|
<Tooltip content="Chat">
|
||||||
|
<Badge
|
||||||
|
count={count === 0 ? null : count}
|
||||||
|
overflowCount={99}
|
||||||
|
type="danger"
|
||||||
|
>
|
||||||
<button
|
<button
|
||||||
className="block"
|
className="block"
|
||||||
onClick={() => setSidesheet(SidesheetType.CHAT)}
|
onClick={() => {
|
||||||
|
setSidesheet(SidesheetType.CHAT);
|
||||||
|
setSeen(messages.length);
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<img src={chatIcon} className="w-8 mb-5" alt="chat icon" />
|
<img src={chatIcon} className="w-8 mb-5" alt="chat icon" />
|
||||||
</button>
|
</button>
|
||||||
|
</Badge>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
<Tooltip content="Team">
|
<Tooltip content="Team">
|
||||||
<button className="block">
|
<button className="block">
|
||||||
@ -104,6 +122,7 @@ export default function Sidebar() {
|
|||||||
visible={sidesheet !== SidesheetType.NONE}
|
visible={sidesheet !== SidesheetType.NONE}
|
||||||
onCancel={() => {
|
onCancel={() => {
|
||||||
setSidesheet(SidesheetType.NONE);
|
setSidesheet(SidesheetType.NONE);
|
||||||
|
setSeen(messages.length);
|
||||||
}}
|
}}
|
||||||
width={340}
|
width={340}
|
||||||
title={getTitle(sidesheet)}
|
title={getTitle(sidesheet)}
|
||||||
|
Loading…
Reference in New Issue
Block a user