2026-04-07 16:07:21 +08:00
|
|
|
import type { ArticleDetail } from "@geo/shared-types";
|
|
|
|
|
|
|
|
|
|
export interface ArticleActionState {
|
|
|
|
|
showPublish: boolean;
|
|
|
|
|
showEdit: boolean;
|
|
|
|
|
showPreview: boolean;
|
|
|
|
|
showCopy: boolean;
|
|
|
|
|
showDelete: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function resolveArticleActionState(generateStatus?: string | null): ArticleActionState {
|
|
|
|
|
if (generateStatus === "completed") {
|
|
|
|
|
return {
|
|
|
|
|
showPublish: true,
|
|
|
|
|
showEdit: true,
|
|
|
|
|
showPreview: true,
|
|
|
|
|
showCopy: true,
|
|
|
|
|
showDelete: true,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-25 21:36:44 +08:00
|
|
|
if (generateStatus === "draft") {
|
2026-04-07 16:07:21 +08:00
|
|
|
return {
|
|
|
|
|
showPublish: false,
|
|
|
|
|
showEdit: true,
|
|
|
|
|
showPreview: false,
|
|
|
|
|
showCopy: false,
|
|
|
|
|
showDelete: true,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-25 21:36:44 +08:00
|
|
|
if (generateStatus === "failed") {
|
|
|
|
|
return {
|
|
|
|
|
showPublish: false,
|
|
|
|
|
showEdit: false,
|
|
|
|
|
showPreview: false,
|
|
|
|
|
showCopy: false,
|
|
|
|
|
showDelete: true,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-07 16:07:21 +08:00
|
|
|
return {
|
|
|
|
|
showPublish: false,
|
|
|
|
|
showEdit: false,
|
|
|
|
|
showPreview: true,
|
|
|
|
|
showCopy: false,
|
|
|
|
|
showDelete: true,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function buildArticleClipboardContent(detail: Pick<ArticleDetail, "title" | "markdown_content">): string {
|
|
|
|
|
return [
|
|
|
|
|
detail.title ? `# ${detail.title}` : "",
|
|
|
|
|
detail.markdown_content ?? "",
|
|
|
|
|
]
|
|
|
|
|
.filter(Boolean)
|
|
|
|
|
.join("\n\n")
|
|
|
|
|
.trim();
|
|
|
|
|
}
|