about summary refs log tree commit diff
path: root/app/javascript/flavours/glitch/features/compose/containers/warning_container.js
diff options
context:
space:
mode:
authorThibaut Girka <thib@sitedethib.com>2020-08-04 21:22:05 +0200
committerThibG <thib@sitedethib.com>2020-08-05 13:43:32 +0200
commita3806ec6bad5fa0a6034687a863ac8d1f8b0f886 (patch)
tree9bbcf402e0e2c528996eec3b8eaf0a667a0447e3 /app/javascript/flavours/glitch/features/compose/containers/warning_container.js
parent13501f73935687a52ca67710f5446c350e9cc0a2 (diff)
[Glitch] Fallback to previous, more approximative hashtag RE on older browsers
Signed-off-by: Thibaut Girka <thib@sitedethib.com>
Diffstat (limited to 'app/javascript/flavours/glitch/features/compose/containers/warning_container.js')
-rw-r--r--app/javascript/flavours/glitch/features/compose/containers/warning_container.js40
1 files changed, 24 insertions, 16 deletions
diff --git a/app/javascript/flavours/glitch/features/compose/containers/warning_container.js b/app/javascript/flavours/glitch/features/compose/containers/warning_container.js
index ea970c61f..ab9d2123a 100644
--- a/app/javascript/flavours/glitch/features/compose/containers/warning_container.js
+++ b/app/javascript/flavours/glitch/features/compose/containers/warning_container.js
@@ -6,22 +6,30 @@ import { FormattedMessage } from 'react-intl';
 import { me } from 'flavours/glitch/util/initial_state';
 import { profileLink, termsLink } from 'flavours/glitch/util/backend_links';
 
-const HASHTAG_SEPARATORS = "_\\u00b7\\u200c";
-const ALPHA = '\\p{L}\\p{M}';
-const WORD = '\\p{L}\\p{M}\\p{N}\\p{Pc}';
-const APPROX_HASHTAG_RE = new RegExp(
-  '(?:^|[^\\/\\)\\w])#((' +
-  '[' + WORD + '_]' +
-  '[' + WORD + HASHTAG_SEPARATORS + ']*' +
-  '[' + ALPHA + HASHTAG_SEPARATORS + ']' +
-  '[' + WORD + HASHTAG_SEPARATORS +']*' +
-  '[' + WORD + '_]' +
-  ')|(' +
-  '[' + WORD + '_]*' +
-  '[' + ALPHA + ']' +
-  '[' + WORD + '_]*' +
-  '))', 'iu'
-);
+const buildHashtagRE = () => {
+  try {
+    const HASHTAG_SEPARATORS = "_\\u00b7\\u200c";
+    const ALPHA = '\\p{L}\\p{M}';
+    const WORD = '\\p{L}\\p{M}\\p{N}\\p{Pc}';
+    return new RegExp(
+      '(?:^|[^\\/\\)\\w])#((' +
+      '[' + WORD + '_]' +
+      '[' + WORD + HASHTAG_SEPARATORS + ']*' +
+      '[' + ALPHA + HASHTAG_SEPARATORS + ']' +
+      '[' + WORD + HASHTAG_SEPARATORS +']*' +
+      '[' + WORD + '_]' +
+      ')|(' +
+      '[' + WORD + '_]*' +
+      '[' + ALPHA + ']' +
+      '[' + WORD + '_]*' +
+      '))', 'iu'
+    );
+  } catch {
+    return /(?:^|[^\/\)\w])#(\w*[a-zA-Z·]\w*)/i;
+  }
+};
+
+const APPROX_HASHTAG_RE = buildHashtagRE();
 
 const mapStateToProps = state => ({
   needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', me, 'locked']),