diff --git a/src/app/components/create-status/create-status.component.spec.ts b/src/app/components/create-status/create-status.component.spec.ts index 25efa830..d8b56d4e 100644 --- a/src/app/components/create-status/create-status.component.spec.ts +++ b/src/app/components/create-status/create-status.component.spec.ts @@ -289,4 +289,13 @@ describe('CreateStatusComponent', () => { expect(result).toBe(`@nicolasconstant@social.nicolas-constant.com${newLine}${newLine}data`); }); + it('should autocomplete - complex', () => { + const newLine = String.fromCharCode(13, 10); + let text = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ullamcorper nulla eu metus euismod, non lobortis${newLine}quam congue. @sengi Ut hendrerit, nulla vel feugiat lobortis, diam ligula congue lacus, sed facilisis nisl dui at mauris.${newLine}Cras non hendrerit tellus. Donec eleifend metus quis nibh commodo${newLine}${newLine}data`; + let pattern = '@sengi'; + let autosuggest = '@sengi@mastodon.social'; + + const result = (component).replacePatternWithAutosuggest(text, pattern, autosuggest); + expect(result).toBe(`Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ullamcorper nulla eu metus euismod, non lobortis${newLine}quam congue. @sengi@mastodon.social Ut hendrerit, nulla vel feugiat lobortis, diam ligula congue lacus, sed facilisis nisl dui at mauris.${newLine}Cras non hendrerit tellus. Donec eleifend metus quis nibh commodo${newLine}${newLine}data`); + }); }); \ No newline at end of file diff --git a/src/app/components/create-status/create-status.component.ts b/src/app/components/create-status/create-status.component.ts index 3e7d26ea..01368bb5 100644 --- a/src/app/components/create-status/create-status.component.ts +++ b/src/app/components/create-status/create-status.component.ts @@ -685,21 +685,12 @@ export class CreateStatusComponent implements OnInit, OnDestroy { suggestionSelected(selection: AutosuggestSelection) { if (this.status.includes(selection.pattern)) { - // let transformedStatus = this.status; - // transformedStatus = transformedStatus.replace(new RegExp(` ${selection.pattern} `), ` ${selection.autosuggest} `).replace(' ', ' '); - // transformedStatus = transformedStatus.replace(new RegExp(`${selection.pattern} `), `${selection.autosuggest} `).replace(' ', ' '); - // transformedStatus = transformedStatus.replace(new RegExp(`${selection.pattern}$`), `${selection.autosuggest} `).replace(' ', ' '); - - // const newLine = String.fromCharCode(13, 10); - // transformedStatus = transformedStatus.replace(new RegExp(`${selection.pattern}${newLine}`), `${selection.autosuggest}${newLine}`).replace(' ', ' '); - - // this.status = transformedStatus; - this.status = this.replacePatternWithAutosuggest(this.status, selection.pattern, selection.autosuggest); - - let newCaretPosition = this.status.indexOf(`${selection.autosuggest} `) + selection.autosuggest.length + 1; - if (newCaretPosition > this.status.length) newCaretPosition = this.status.length; + let cleanStatus = this.status.replace(/\r?\n/g, ' '); + console.warn([cleanStatus]); + let newCaretPosition = cleanStatus.indexOf(`${selection.autosuggest}`) + selection.autosuggest.length; + if (newCaretPosition > cleanStatus.length) newCaretPosition = cleanStatus.length; this.autosuggestData = null; this.hasSuggestions = false; @@ -727,12 +718,9 @@ export class CreateStatusComponent implements OnInit, OnDestroy { let words = line.split(' '); words = words.map(word => { - console.warn(`+${word}+`); return word.replace(regex, `${autosuggest}`); }); - console.log(words); - statusPerLinesPerWords.push(words); });