refactor: move biz logic to core

This commit is contained in:
Henry Li
2026-01-16 19:51:39 +08:00
parent f6c20dbcfe
commit ce70b67459
5 changed files with 89 additions and 81 deletions

View File

@@ -5,6 +5,7 @@ import {
Message as AIElementMessage,
MessageContent as AIElementMessageContent,
MessageResponse as AIElementMessageResponse,
MessageToolbar,
} from "@/components/ai-elements/message";
import {
extractContentFromMessage,
@@ -15,6 +16,7 @@ import { useRehypeSplitWordsIntoSpans } from "@/core/rehype";
import { cn } from "@/lib/utils";
import { MessageGroup } from "./message-group";
import { CopyButton } from "../copy-button";
export function MessageListItem({
className,
@@ -38,6 +40,17 @@ export function MessageListItem({
messagesInGroup={messagesInGroup}
isLoading={isLoading}
/>
<MessageToolbar
className={cn(
message.type === "human" && "justify-end",
message.type === "human" ? "-bottom-9" : "-bottom-8",
"absolute right-0 left-0 z-20 opacity-0 transition-opacity delay-200 duration-300 group-hover/conversation-message:opacity-100",
)}
>
<div className="flex gap-1">
<CopyButton clipboardData={extractContentFromMessage(message)} />
</div>
</MessageToolbar>
</AIElementMessage>
);
}

View File

@@ -31,7 +31,7 @@ export function MessageList({
<ConversationContent className="mx-auto w-full max-w-(--container-width-md)">
{groupMessages(
thread.messages,
(groupedMessages, groupIndex, isLastGroup) => {
(groupedMessages) => {
if (groupedMessages[0] && hasContent(groupedMessages[0])) {
const message = groupedMessages[0];
return (

View File

@@ -57,7 +57,7 @@ export function RecentChatList() {
<SidebarMenu>
<div className="flex w-full flex-col gap-1">
{threads.map((thread) => {
const isActive = pathOfThread(thread, false) === pathname;
const isActive = pathOfThread(thread.thread_id) === pathname;
return (
<SidebarMenuItem
key={thread.thread_id}
@@ -67,7 +67,7 @@ export function RecentChatList() {
<div>
<Link
className="text-muted-foreground block w-full whitespace-nowrap group-hover/side-menu-item:overflow-hidden"
href={pathOfThread(thread)}
href={pathOfThread(thread.thread_id)}
>
{titleOfThread(thread)}
</Link>