diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2022-07-13 15:03:28 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-13 15:03:28 +0200 |
commit | e7aa2be828f6a632dadd5c41e2364cea91ddbb2c (patch) | |
tree | f18390c05c4aa6ce5b15572b470db4bd4791129b /app/javascript | |
parent | 12ed2d793b1b4823b0df047a47677bb0667bf43d (diff) |
Change how hashtags are normalized (#18795)
* Change how hashtags are normalized * Fix tests
Diffstat (limited to 'app/javascript')
-rw-r--r-- | app/javascript/mastodon/actions/compose.js | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index bd4c1d002..32d8c229e 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -606,7 +606,20 @@ function insertIntoTagHistory(recognizedTags, text) { const state = getState(); const oldHistory = state.getIn(['compose', 'tagHistory']); const me = state.getIn(['meta', 'me']); - const names = recognizedTags.map(tag => text.match(new RegExp(`#${tag.name}`, 'i'))[0].slice(1)); + + // FIXME: Matching input hashtags with recognized hashtags has become more + // complicated because of new normalization rules, it's no longer just + // a case sensitivity issue + const names = recognizedTags.map(tag => { + const matches = text.match(new RegExp(`#${tag.name}`, 'i')); + + if (matches && matches.length > 0) { + return matches[0].slice(1); + } else { + return tag.name; + } + }); + const intersectedOldHistory = oldHistory.filter(name => names.findIndex(newName => newName.toLowerCase() === name.toLowerCase()) === -1); names.push(...intersectedOldHistory.toJS()); |