feat: #2308 improve chat actions ux

This commit is contained in:
Yidadaa 2023-07-09 16:39:46 +08:00
parent 90d8f3117f
commit b55b01cb13
3 changed files with 23 additions and 20 deletions

View File

@ -730,16 +730,18 @@ export function Chat() {
deleteMessage(msgId); deleteMessage(msgId);
}; };
const onResend = (botMessageId: number) => { const onResend = (message: ChatMessage) => {
// find last user input message and resend let content = message.content;
const userIndex = findLastUserIndex(botMessageId);
if (userIndex === null) return; if (message.role === "assistant" && message.id) {
const userIndex = findLastUserIndex(message.id);
if (userIndex) {
content = session.messages.at(userIndex)?.content ?? content;
}
}
setIsLoading(true); setIsLoading(true);
const userMsg = session.messages[userIndex]; chatStore.onUserInput(content).then(() => setIsLoading(false));
deleteMessage(userMsg.id);
deleteMessage(botMessageId);
chatStore.onUserInput(userMsg.content).then(() => setIsLoading(false));
inputRef.current?.focus(); inputRef.current?.focus();
}; };
@ -918,12 +920,11 @@ export function Chat() {
> >
{messages.map((message, i) => { {messages.map((message, i) => {
const isUser = message.role === "user"; const isUser = message.role === "user";
// const showActions = const isContext = i < context.length;
// !isUser && const showActions =
// i > 0 && i > 0 &&
// !(message.preview || message.content.length === 0) && !(message.preview || message.content.length === 0) &&
// i >= context.length; // do not show actions for context prompts !isContext;
const showActions = true;
const showTyping = message.preview || message.streaming; const showTyping = message.preview || message.streaming;
const shouldShowClearContextDivider = i === clearContextIndex - 1; const shouldShowClearContextDivider = i === clearContextIndex - 1;
@ -980,7 +981,7 @@ export function Chat() {
<ChatAction <ChatAction
text={Locale.Chat.Actions.Retry} text={Locale.Chat.Actions.Retry}
icon={<ResetIcon />} icon={<ResetIcon />}
onClick={() => onResend(message.id ?? i)} onClick={() => onResend(message)}
/> />
<ChatAction <ChatAction
@ -1028,11 +1029,11 @@ export function Chat() {
/> />
</div> </div>
{showActions && (
<div className={styles["chat-message-action-date"]}> <div className={styles["chat-message-action-date"]}>
{message.date.toLocaleString()} {isContext
? Locale.Chat.IsContext
: message.date.toLocaleString()}
</div> </div>
)}
</div> </div>
</div> </div>
{shouldShowClearContextDivider && <ClearContextDivider />} {shouldShowClearContextDivider && <ClearContextDivider />}

View File

@ -66,6 +66,7 @@ const cn = {
Reset: "清除记忆", Reset: "清除记忆",
SaveAs: "存为面具", SaveAs: "存为面具",
}, },
IsContext: "预设提示词",
}, },
Export: { Export: {
Title: "分享聊天记录", Title: "分享聊天记录",

View File

@ -68,6 +68,7 @@ const en: LocaleType = {
Reset: "Reset to Default", Reset: "Reset to Default",
SaveAs: "Save as Mask", SaveAs: "Save as Mask",
}, },
IsContext: "Contextual Prompt",
}, },
Export: { Export: {
Title: "Export Messages", Title: "Export Messages",