From 912d9e31b55607a8a425bf706a6918759f6e3a71 Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Thu, 17 Sep 2020 22:16:53 -0400 Subject: [PATCH] better misskey parsing in pleroma --- .../databinded-text/databinded-text.component.spec.ts | 9 +++++++++ .../databinded-text/databinded-text.component.ts | 11 ++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/app/components/stream/status/databinded-text/databinded-text.component.spec.ts b/src/app/components/stream/status/databinded-text/databinded-text.component.spec.ts index 9426d8eb..495dd8cd 100644 --- a/src/app/components/stream/status/databinded-text/databinded-text.component.spec.ts +++ b/src/app/components/stream/status/databinded-text/databinded-text.component.spec.ts @@ -156,6 +156,15 @@ describe('DatabindedTextComponent', () => { expect(component.processedText).toContain('

Blabla

'); //FIXME: dont let domain appear in name }); + it('should parse mention - Misskey in Pleroma', () => { + const sample = `

@sengi@domain.xyz @sengi@domain.eu bla bla
bla bla bla

`; + + component.text = sample; + expect(component.processedText).toContain('@sengi'); + expect(component.processedText).toContain(''); + expect(component.processedText).toContain(' bla bla
bla bla bla
'); + }); + it('should parse mention - Misskey in Mastodon - 2', () => { const sample = `

Since @test@mastodon.technology mentioned

`; diff --git a/src/app/components/stream/status/databinded-text/databinded-text.component.ts b/src/app/components/stream/status/databinded-text/databinded-text.component.ts index 3c94b985..57902653 100644 --- a/src/app/components/stream/status/databinded-text/databinded-text.component.ts +++ b/src/app/components/stream/status/databinded-text/databinded-text.component.ts @@ -28,7 +28,7 @@ export class DatabindedTextComponent implements OnInit { @Input('text') set text(value: string) { - //console.log(value); + // console.log(value); let parser = new DOMParser(); var dom = parser.parseFromString(value, 'text/html') @@ -113,13 +113,18 @@ export class DatabindedTextComponent implements OnInit { extractedAccountAndNext = section.split('
'); extractedAccountName = extractedAccountAndNext[0].split('@')[1].replace('', '').replace('', ''); } else if (section.includes('class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@') && !section.includes('target="_blank">@<')) { //Misskey - //console.warn('misskey'); - extractedAccountAndNext = section.split(''); extractedAccountName = extractedAccountAndNext[0].split('class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@')[1]; if (extractedAccountName.includes('@')) extractedAccountName = extractedAccountName.split('@')[0]; + } else if(section.includes(' class="u-url mention">@') && !section.includes(' class="u-url mention">@<')) { //Misskey in pleroma + extractedAccountAndNext = section.split(''); + extractedAccountName = extractedAccountAndNext[0].split(' class="u-url mention">@')[1]; + + if (extractedAccountName.includes('@')) + extractedAccountName = extractedAccountName.split('@')[0]; + } else if (!section.includes('@')) { //GNU social extractedAccountAndNext = section.split(''); extractedAccountName = extractedAccountAndNext[0].split('>')[1];