diff --git a/src/utils/__tests__/import-bokante-comments.test.js b/src/utils/__tests__/import-bokante-comments.test.js index 2110577..c9ba9ea 100644 --- a/src/utils/__tests__/import-bokante-comments.test.js +++ b/src/utils/__tests__/import-bokante-comments.test.js @@ -87,6 +87,21 @@ describe('importBokanteComments', () => { expect(result.imported).toBe(1); }); + it('retire la mention initiale du compte cité (déjà visible via l\'auteur)', async () => { + bokanteMastodon.getStatusContext = vi.fn(async () => ({ + descendants: [buildStatus({content: '
@pawol_nu Trè bèl !
'})] + })); + const paroles = [{id: 7, documentId: 'doc-7', slug: 'mon-titre', bokanteStatusId: '112233'}]; + const strapi = buildStrapi({paroles}); + + await importBokanteComments({strapi}); + + expect(strapi.documents('api::commentaire.commentaire').create).toHaveBeenCalledWith({ + status: 'published', + data: expect.objectContaining({contenu: 'Trè bèl !'}) + }); + }); + it('n\'importe pas un commentaire déjà présent (déduplication par remoteId)', async () => { bokanteMastodon.getStatusContext = vi.fn(async () => ({descendants: [buildStatus({id: 'deja-la'})]})); const paroles = [{id: 7, documentId: 'doc-7', slug: 'mon-titre', bokanteStatusId: '112233'}]; diff --git a/src/utils/import-bokante-comments.js b/src/utils/import-bokante-comments.js index ab219e5..2302ea1 100644 --- a/src/utils/import-bokante-comments.js +++ b/src/utils/import-bokante-comments.js @@ -6,6 +6,12 @@ function stripHtml(html) { return (html || '').replace(/<[^>]*>/g, '').trim(); } +// Mastodon préfixe toujours une réponse par la mention du compte cité, +// déjà visible via l'avatar/le nom : redondant à l'affichage. +function stripMentionsInisyal(texte) { + return texte.replace(/^(@\S+\s*)+/, '').trim(); +} + async function importBokanteComments({strapi}) { const paroles = await strapi.db.query('api::parole.parole').findMany({ where: {bokanteStatusId: {$notNull: true}} @@ -39,7 +45,7 @@ async function importBokanteComments({strapi}) { const commentaire = await strapi.documents('api::commentaire.commentaire').create({ status: 'published', data: { - contenu: stripHtml(status.content), + contenu: stripMentionsInisyal(stripHtml(status.content)), datePublication: status.created_at, origine: 'activitypub', auteurNom: status.account?.display_name,