diff options
author | Ollie H <renahlee@outlook.com> | 2023-05-09 10:13:23 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-09 12:13:23 -0500 |
commit | 8f6b5d3df9b5a5bb61514497f3f25289513ef119 (patch) | |
tree | e3b16b8aa3f9cb54595c17e78b3ebb18e3b2ae55 /src/view/com/composer/text-input/hooks/useGrapheme.tsx | |
parent | 9a91b0c538e3c24a25285ae2bdf1d0dfd2ba53a4 (diff) | |
download | voidsky-8f6b5d3df9b5a5bb61514497f3f25289513ef119.tar.zst |
Add avatar to mobile autocomplete and create grapheme hook (#602)
* Add avatar to mobile autocomplete and create grapheme hook * Remove comment, update filename, cut out redundant logic
Diffstat (limited to 'src/view/com/composer/text-input/hooks/useGrapheme.tsx')
-rw-r--r-- | src/view/com/composer/text-input/hooks/useGrapheme.tsx | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/view/com/composer/text-input/hooks/useGrapheme.tsx b/src/view/com/composer/text-input/hooks/useGrapheme.tsx new file mode 100644 index 000000000..25947c3ec --- /dev/null +++ b/src/view/com/composer/text-input/hooks/useGrapheme.tsx @@ -0,0 +1,36 @@ +import Graphemer from 'graphemer' +import {useCallback, useMemo} from 'react' + +export const useGrapheme = () => { + const splitter = useMemo(() => new Graphemer(), []) + + const getGraphemeString = useCallback( + (name: string, length: number) => { + let remainingCharacters = 0 + + if (name.length > length) { + const graphemes = splitter.splitGraphemes(name) + + if (graphemes.length > length) { + remainingCharacters = 0 + name = `${graphemes.slice(0, length).join('')}...` + } else { + remainingCharacters = length - graphemes.length + name = graphemes.join('') + } + } else { + remainingCharacters = length - name.length + } + + return { + name, + remainingCharacters, + } + }, + [splitter], + ) + + return { + getGraphemeString, + } +} |