diff --git a/src/lib/strings/hashtags.ts b/src/lib/strings/hashtags.ts index eb510f4d3b..3e057f6927 100644 --- a/src/lib/strings/hashtags.ts +++ b/src/lib/strings/hashtags.ts @@ -1,3 +1,10 @@ export const TAG_REGEX = /(?:^|\s)(#[^\d\s]\S*)(?=\s)?/gi export const ENDING_PUNCTUATION_REGEX = /\p{P}+$/gu export const LEADING_HASH_REGEX = /^#/ + +export function sanitize(tagString: string) { + return tagString + .trim() + .replace(LEADING_HASH_REGEX, '') + .replace(ENDING_PUNCTUATION_REGEX, '') +} diff --git a/src/lib/strings/helpers.ts b/src/lib/strings/helpers.ts index ef93a366f9..ff91cbb226 100644 --- a/src/lib/strings/helpers.ts +++ b/src/lib/strings/helpers.ts @@ -32,3 +32,7 @@ export function toHashCode(str: string, seed = 0): number { return 4294967296 * (2097151 & h2) + (h1 >>> 0) } + +export function uniq(tags: string[]) { + return Array.from(new Set(tags)) +} diff --git a/src/view/com/composer/TagInput/index.tsx b/src/view/com/composer/TagInput/index.tsx index 586d6b1f8c..2afb2821a1 100644 --- a/src/view/com/composer/TagInput/index.tsx +++ b/src/view/com/composer/TagInput/index.tsx @@ -22,21 +22,8 @@ import * as Sheet from 'view/com/sheets/Base' import {useStores} from 'state/index' import {ActivityIndicator} from 'react-native' import {TagInputEntryButton} from './TagInputEntryButton' -import { - ENDING_PUNCTUATION_REGEX, - LEADING_HASH_REGEX, -} from 'lib/strings/hashtags' - -function uniq(tags: string[]) { - return Array.from(new Set(tags)) -} - -function sanitize(tagString: string) { - return tagString - .trim() - .replace(LEADING_HASH_REGEX, '') - .replace(ENDING_PUNCTUATION_REGEX, '') -} +import {sanitize} from 'lib/strings/hashtags' +import {uniq} from 'lib/strings/helpers' export function TagInput({ max = 8, diff --git a/src/view/com/composer/TagInput/index.web.tsx b/src/view/com/composer/TagInput/index.web.tsx index 7867430e04..8365150b44 100644 --- a/src/view/com/composer/TagInput/index.web.tsx +++ b/src/view/com/composer/TagInput/index.web.tsx @@ -14,10 +14,6 @@ import { } from '@fortawesome/react-native-fontawesome' import {Pin} from 'pind' -import { - ENDING_PUNCTUATION_REGEX, - LEADING_HASH_REGEX, -} from 'lib/strings/hashtags' import {isWeb} from 'platform/detection' import {TagsAutocompleteModel} from 'state/models/ui/tags-autocomplete' import {usePalette} from 'lib/hooks/usePalette' @@ -26,17 +22,8 @@ import {Text} from 'view/com/util/text/Text' import {useStores} from 'state/index' import {TagInputEntryButton} from './TagInputEntryButton' import {TextInputFocusEventData} from 'react-native' - -function uniq(tags: string[]) { - return Array.from(new Set(tags)) -} - -function sanitize(tagString: string) { - return tagString - .trim() - .replace(LEADING_HASH_REGEX, '') - .replace(ENDING_PUNCTUATION_REGEX, '') -} +import {sanitize} from 'lib/strings/hashtags' +import {uniq} from 'lib/strings/helpers' export function TagInput({ max = 8,