dev: 复制会话id按钮和跳转新会话的按钮

This commit is contained in:
肖应宇 2026-05-07 10:51:44 +08:00
parent cb56507767
commit f209057b18
1 changed files with 48 additions and 1 deletions

View File

@ -3,6 +3,7 @@
import { MessageSquarePlus } from "lucide-react";
import Link from "next/link";
import { usePathname } from "next/navigation";
import { toast } from "sonner";
import {
SidebarMenu,
@ -11,14 +12,34 @@ import {
SidebarTrigger,
useSidebar,
} from "@/components/ui/sidebar";
import { useThreadChat } from "@/components/workspace/chats";
import { useI18n } from "@/core/i18n/hooks";
import { POST_MESSAGE_TYPES, sendToParent } from "@/core/iframe-messages";
import { env } from "@/env";
import { cn } from "@/lib/utils";
import { copyToClipboard } from "@/lib/utils";
export function WorkspaceHeader({ className }: { className?: string }) {
const { t } = useI18n();
const { state } = useSidebar();
const pathname = usePathname();
const { threadId } = useThreadChat();
const threadUrl = threadId ? `/workspace/chats/${threadId}` : "";
const handleCopyThreadId = async () => {
if (!threadId) return;
sendToParent({
type: POST_MESSAGE_TYPES.COPY_TO_CLIPBOARD,
text: threadId,
});
try {
await copyToClipboard(threadId);
toast.success(t.clipboard.copiedToClipboard);
} catch {
toast.error(t.clipboard.failedToCopyToClipboard);
}
};
return (
<>
<div
@ -43,7 +64,33 @@ export function WorkspaceHeader({ className }: { className?: string }) {
) : (
<div className="text-primary ml-2 cursor-default font-serif">
{/* TODO: 测试标识 */}
XClaw <span className="text-sm text-ws-text-subtle-strong">v3.2.9</span>
XClaw{" "}
<span className="text-sm text-ws-text-subtle-strong">v3.2.9 </span>{" "}
<span
className={cn(
"text-xs font-mono",
threadId
? "cursor-pointer underline decoration-dotted underline-offset-4"
: "text-ws-text-subtle-strong",
)}
onClick={() => {
void handleCopyThreadId();
}}
title={threadId ? t.clipboard.copyToClipboard : undefined}
>
id:{threadId ? threadId.slice(0, 5) : "-"}
</span>
{" "}
{threadId && (
<a
href={threadUrl}
target="_blank"
rel="noopener noreferrer"
className="text-xs underline decoration-dotted underline-offset-4"
>
</a>
)}
</div>
)}
<SidebarTrigger />