diff --git a/apps/admin-web/src/components/ArticleDetailDrawer.vue b/apps/admin-web/src/components/ArticleDetailDrawer.vue index 22b1142..a6388a0 100644 --- a/apps/admin-web/src/components/ArticleDetailDrawer.vue +++ b/apps/admin-web/src/components/ArticleDetailDrawer.vue @@ -7,6 +7,7 @@ import type { ArticleVersion, PublishRecord } from "@geo/shared-types"; import { computed, ref, watch } from "vue"; import { useI18n } from "vue-i18n"; +import ArticlePublishStatus from "@/components/ArticlePublishStatus.vue"; import MarkdownPreview from "@/components/MarkdownPreview.vue"; import { articlesApi, @@ -121,7 +122,6 @@ const displayMarkdown = computed(() => streamMarkdown.value || detail.value?.mar const generateMeta = computed(() => getGenerateStatusMeta(streamStatus.value || detail.value?.generate_status), ); -const publishMeta = computed(() => getPublishStatusMeta(detail.value?.publish_status)); const sourceArticleTitle = computed(() => detail.value?.source_title?.trim() || ""); const sourceArticleURL = computed(() => detail.value?.source_url?.trim() || ""); @@ -274,7 +274,11 @@ async function copyPublishLink(record: PublishRecord): Promise {
{{ generateMeta.label }} - {{ publishMeta.label }} +
diff --git a/apps/admin-web/src/components/ArticlePublishStatus.vue b/apps/admin-web/src/components/ArticlePublishStatus.vue index af8709b..8c86e66 100644 --- a/apps/admin-web/src/components/ArticlePublishStatus.vue +++ b/apps/admin-web/src/components/ArticlePublishStatus.vue @@ -40,7 +40,8 @@ const props = withDefaults(defineProps<{ const { t } = useI18n(); const popoverOpen = ref(false); -const shouldLoadPlatforms = computed(() => props.showPlatforms && Boolean(props.articleId) && props.status !== "unpublished"); +const shouldLoadRecords = computed(() => Boolean(props.articleId) && props.status !== "unpublished"); +const shouldLoadPlatforms = computed(() => props.showPlatforms && shouldLoadRecords.value); const platformsQuery = useQuery({ queryKey: ["media", "platforms", "publish-status"], @@ -50,12 +51,13 @@ const platformsQuery = useQuery({ }); const publishRecordsQuery = useQuery({ - queryKey: computed(() => ["articles", "publish-records", props.articleId, "publish-status"]), - enabled: computed(() => popoverOpen.value && shouldLoadPlatforms.value), + queryKey: computed(() => ["articles", "publish-records", props.articleId]), + enabled: shouldLoadRecords, queryFn: () => articlesApi.publishRecords(props.articleId as number), + staleTime: 30 * 1000, }); -const hasPopover = computed(() => shouldLoadPlatforms.value); +const hasPopover = computed(() => props.showPlatforms && shouldLoadRecords.value); const platformMap = computed(() => { return new Map( @@ -108,6 +110,10 @@ const pendingEntries = computed(() => ); const displayStatus = computed(() => { + if (successEntries.value.length > 0 && failedEntries.value.length > 0) { + return "partial_success"; + } + if (failedEntries.value.length > 0) { return "failed"; } @@ -121,7 +127,7 @@ const displayStatus = computed(() => { } if (props.status === "partial_success") { - return "failed"; + return "partial_success"; } if (props.status === "publish_success" || props.status === "published") { @@ -149,6 +155,8 @@ const statusTone = computed(() => { return "failed"; case "publishing": return "processing"; + case "partial_success": + return "warning"; default: return "default"; } diff --git a/apps/admin-web/src/i18n/messages/en-US.ts b/apps/admin-web/src/i18n/messages/en-US.ts index e05a9d4..e08380e 100644 --- a/apps/admin-web/src/i18n/messages/en-US.ts +++ b/apps/admin-web/src/i18n/messages/en-US.ts @@ -596,7 +596,7 @@ const enUS = { publishing: "Publishing", success: "Published", failed: "Failed", - partial_success: "Partial Success", + partial_success: "Partially Published", published: "Published", publish_success: "Published", publish_failed: "Failed", diff --git a/apps/admin-web/src/i18n/messages/zh-CN.ts b/apps/admin-web/src/i18n/messages/zh-CN.ts index 804681a..75c19a6 100644 --- a/apps/admin-web/src/i18n/messages/zh-CN.ts +++ b/apps/admin-web/src/i18n/messages/zh-CN.ts @@ -596,7 +596,7 @@ const zhCN = { publishing: "发布中", success: "发布成功", failed: "发布失败", - partial_success: "部分成功", + partial_success: "部分发布", published: "发布成功", publish_success: "发布成功", publish_failed: "发布失败",