fix: complete folder archive action handling

This commit is contained in:
kris
2026-04-06 05:35:42 +08:00
parent a46f11cf6c
commit 6956d1ac78
7 changed files with 352 additions and 24 deletions

View File

@@ -363,8 +363,16 @@ export function getConversationListItemPresentation(conversation: ConversationIt
};
}
function conversationActionsPath(projectId: string) {
return `/api/v1/conversations/${projectId}/actions`;
export function getConversationActionAvailability(conversation: ConversationItem) {
const canTogglePin = conversation.projectId !== "master-agent";
return {
canTogglePin,
togglePinLabel: conversation.topPinnedLabel || conversation.manualPinned ? "取消置顶" : "置顶",
};
}
export function getConversationActionsPath(projectId: string) {
return `/api/v1/conversations/${encodeURIComponent(projectId)}/actions`;
}
function ConversationActionButtons({
@@ -374,14 +382,11 @@ function ConversationActionButtons({
}) {
const router = useRouter();
const [loading, setLoading] = useState<"toggle_pin" | "mark_read" | null>(null);
if (conversation.conversationType === "folder_archive") {
return <div className="min-h-[24px]" />;
}
const actionAvailability = getConversationActionAvailability(conversation);
async function runAction(action: "toggle_pin" | "mark_read") {
setLoading(action);
await fetch(conversationActionsPath(conversation.projectId), {
await fetch(getConversationActionsPath(conversation.projectId), {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ action }),
@@ -392,14 +397,14 @@ function ConversationActionButtons({
return (
<div className="flex items-center gap-2">
{conversation.projectId !== "master-agent" ? (
{actionAvailability.canTogglePin ? (
<button
type="button"
onClick={() => void runAction("toggle_pin")}
disabled={loading === "toggle_pin"}
className="rounded-full border border-[#D9D9D9] px-3 py-1 text-[11px] text-[#57606A]"
>
{conversation.manualPinned ? "取消置顶" : "置顶"}
{actionAvailability.togglePinLabel}
</button>
) : null}
{conversation.unreadCount > 0 ? (
@@ -477,7 +482,7 @@ export function ConversationList({
<div className="min-h-[18px] text-[11px] text-[#07C160]">
{conversation.projectId === "master-agent"
? "置顶"
: conversation.manualPinned
: conversation.topPinnedLabel
? "置顶"
: ""}
</div>