diff --git a/frontend/src/components/posts/PostCard.vue b/frontend/src/components/posts/PostCard.vue index 2d7be9f..d8a7981 100644 --- a/frontend/src/components/posts/PostCard.vue +++ b/frontend/src/components/posts/PostCard.vue @@ -20,7 +20,7 @@ class="fc-post-card__synthetic" :title="synthesisTitle" > - grouped by FabledCurator + {{ synthesisChip }} toPlainText(props.post.post_title)) // post dict by hand, must degrade to "not synthetic" rather than throw. const synthesized = computed(() => Boolean(props.post.synthesized_by)) const messageCount = computed(() => props.post.synthesis?.message_count ?? 0) +// A drop of one message stays a synthetic post (teaser matching only looks at +// drops), but there is nothing grouped in it — #4390: "Grouped from 1 Discord +// message" described a wrapper, not a grouping. Say what it is instead. const synthesisTitle = computed(() => { const n = messageCount.value if (!n) return 'Grouped from Discord' - return `Grouped from ${n} Discord message${n === 1 ? '' : 's'}` + if (n === 1) return 'Discord message' + return `Grouped from ${n} Discord messages` }) +const synthesisChip = computed(() => + messageCount.value === 1 ? 'from Discord' : 'grouped by FabledCurator' +) const hero = computed(() => images.value[0]) diff --git a/frontend/test/components/postCard.spec.js b/frontend/test/components/postCard.spec.js index b96f779..5bb2224 100644 --- a/frontend/test/components/postCard.spec.js +++ b/frontend/test/components/postCard.spec.js @@ -149,13 +149,16 @@ describe('PostCard', () => { expect(w.find('.fc-post-card__assoc').exists()).toBe(false) }) - it('singularises a one-message drop', () => { + it('does not call a one-message drop a grouping (#4390)', () => { const w = mountComponent(PostCard, { props: { post: { ...SYNTH, synthesis: { message_count: 1 } } }, pinia: freshPinia(), }) - expect(w.text()).toContain('Grouped from 1 Discord message') - expect(w.text()).not.toContain('1 Discord messages') + expect(w.text()).toContain('Discord message') + expect(w.text()).not.toContain('Grouped from') + // The marker stays — FC still wrote this post — but names the source. + expect(w.find('.fc-post-card__synthetic').text()).toContain('from Discord') + expect(w.text()).not.toContain('grouped by FabledCurator') }) })