feat: Add button to remove messages and responses
This commit is contained in:
parent
61eb356fd9
commit
2ffe2a98b8
|
@ -324,8 +324,21 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-message-user > .chat-message-container > .chat-message-item {
|
.chat-message-user > .chat-message-container {
|
||||||
|
.chat-message-top-actions {
|
||||||
|
flex-direction: row;
|
||||||
|
right: unset;
|
||||||
|
left: 20px;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
.chat-message-top-actions {
|
||||||
|
left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& > .chat-message-item {
|
||||||
background-color: var(--second);
|
background-color: var(--second);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-message-actions {
|
.chat-message-actions {
|
||||||
|
|
|
@ -274,6 +274,10 @@ export function Chat(props: {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const onMessageDelete = (messageIndex: number) => {
|
||||||
|
chatStore.removeMessage(sessionIndex, messageIndex);
|
||||||
|
};
|
||||||
|
|
||||||
const onResend = (botIndex: number) => {
|
const onResend = (botIndex: number) => {
|
||||||
// find last user input message and resend
|
// find last user input message and resend
|
||||||
for (let i = botIndex; i >= 0; i -= 1) {
|
for (let i = botIndex; i >= 0; i -= 1) {
|
||||||
|
@ -418,8 +422,8 @@ export function Chat(props: {
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div className={styles["chat-message-item"]}>
|
<div className={styles["chat-message-item"]}>
|
||||||
{!isUser &&
|
{!isUser
|
||||||
!(message.preview || message.content.length === 0) && (
|
? !(message.preview || message.content.length === 0) && (
|
||||||
<div className={styles["chat-message-top-actions"]}>
|
<div className={styles["chat-message-top-actions"]}>
|
||||||
{message.streaming ? (
|
{message.streaming ? (
|
||||||
<div
|
<div
|
||||||
|
@ -444,6 +448,18 @@ export function Chat(props: {
|
||||||
{Locale.Chat.Actions.Copy}
|
{Locale.Chat.Actions.Copy}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
)
|
||||||
|
: !(message.preview || message.content.length === 0) && (
|
||||||
|
<div className={styles["chat-message-top-actions"]}>
|
||||||
|
{!message.streaming && (
|
||||||
|
<div
|
||||||
|
className={styles["chat-message-top-action"]}
|
||||||
|
onClick={(e) => onMessageDelete(i)}
|
||||||
|
>
|
||||||
|
{Locale.Chat.Actions.Delete}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
)}
|
)}
|
||||||
{(message.preview || message.content.length === 0) &&
|
{(message.preview || message.content.length === 0) &&
|
||||||
!isUser ? (
|
!isUser ? (
|
||||||
|
|
|
@ -17,6 +17,7 @@ const cn = {
|
||||||
Copy: "复制",
|
Copy: "复制",
|
||||||
Stop: "停止",
|
Stop: "停止",
|
||||||
Retry: "重试",
|
Retry: "重试",
|
||||||
|
Delete: "删除",
|
||||||
},
|
},
|
||||||
Rename: "重命名对话",
|
Rename: "重命名对话",
|
||||||
Typing: "正在输入…",
|
Typing: "正在输入…",
|
||||||
|
|
|
@ -19,6 +19,7 @@ const en: LocaleType = {
|
||||||
Copy: "Copy",
|
Copy: "Copy",
|
||||||
Stop: "Stop",
|
Stop: "Stop",
|
||||||
Retry: "Retry",
|
Retry: "Retry",
|
||||||
|
Delete: "Delete",
|
||||||
},
|
},
|
||||||
Rename: "Rename Chat",
|
Rename: "Rename Chat",
|
||||||
Typing: "Typing…",
|
Typing: "Typing…",
|
||||||
|
|
|
@ -18,6 +18,7 @@ const tw: LocaleType = {
|
||||||
Copy: "複製",
|
Copy: "複製",
|
||||||
Stop: "停止",
|
Stop: "停止",
|
||||||
Retry: "重試",
|
Retry: "重試",
|
||||||
|
Delete: "刪除",
|
||||||
},
|
},
|
||||||
Rename: "重命名對話",
|
Rename: "重命名對話",
|
||||||
Typing: "正在輸入…",
|
Typing: "正在輸入…",
|
||||||
|
|
|
@ -194,6 +194,7 @@ interface ChatStore {
|
||||||
summarizeSession: () => void;
|
summarizeSession: () => void;
|
||||||
updateStat: (message: Message) => void;
|
updateStat: (message: Message) => void;
|
||||||
updateCurrentSession: (updater: (session: ChatSession) => void) => void;
|
updateCurrentSession: (updater: (session: ChatSession) => void) => void;
|
||||||
|
removeMessage: (sessionIndex: number, messageIndex: number) => void;
|
||||||
updateMessage: (
|
updateMessage: (
|
||||||
sessionIndex: number,
|
sessionIndex: number,
|
||||||
messageIndex: number,
|
messageIndex: number,
|
||||||
|
@ -384,6 +385,15 @@ export const useChatStore = create<ChatStore>()(
|
||||||
return recentMessages;
|
return recentMessages;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
removeMessage(sessionIndex: number, messageIndex: number) {
|
||||||
|
const sessions = get().sessions;
|
||||||
|
const session = sessions.at(sessionIndex);
|
||||||
|
const messages = session?.messages;
|
||||||
|
// remove user's message and bot's response
|
||||||
|
messages?.splice(messageIndex, 2);
|
||||||
|
set(() => ({ sessions }));
|
||||||
|
},
|
||||||
|
|
||||||
updateMessage(
|
updateMessage(
|
||||||
sessionIndex: number,
|
sessionIndex: number,
|
||||||
messageIndex: number,
|
messageIndex: number,
|
||||||
|
|
Loading…
Reference in New Issue