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