diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index dea27923..277d2484 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -1,3 +1,12 @@ +## Upcoming + +🐞 Fixed + +- [#1502](https://github.com/GetStream/stream-chat-flutter/issues/1502) Fixed `isOnlyEmoji` method Detects Single Hangul + Consonants as Emoji. +- [#1505](https://github.com/GetStream/stream-chat-flutter/issues/1505) Fixed Message bubble disappears for Hangul + Consonants. + ## 6.0.0 🐞 Fixed diff --git a/packages/stream_chat_flutter/lib/src/utils/extensions.dart b/packages/stream_chat_flutter/lib/src/utils/extensions.dart index 67b622db..06b02aae 100644 --- a/packages/stream_chat_flutter/lib/src/utils/extensions.dart +++ b/packages/stream_chat_flutter/lib/src/utils/extensions.dart @@ -34,7 +34,7 @@ extension StringExtension on String { if (trimmedString.isEmpty) return false; if (trimmedString.characters.length > 3) return false; final emojiRegex = RegExp( - r'^(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])+$', + r'^(\u00a9|\u00ae|\u200d|[\ufe00-\ufe0f]|[\u2600-\u27FF]|[\u2300-\u2bFF]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])+$', multiLine: true, caseSensitive: false, ); diff --git a/packages/stream_chat_flutter/test/src/utils/extension_test.dart b/packages/stream_chat_flutter/test/src/utils/extension_test.dart index 26980727..eef7677e 100644 --- a/packages/stream_chat_flutter/test/src/utils/extension_test.dart +++ b/packages/stream_chat_flutter/test/src/utils/extension_test.dart @@ -81,6 +81,71 @@ void main() { expect('🌢1'.isOnlyEmoji, false); expect('πŸ‘¨β€πŸ‘¨πŸ‘¨β€πŸ‘¨'.isOnlyEmoji, true); expect('πŸ‘¨β€πŸ‘¨πŸ‘¨β€πŸ‘¨ '.isOnlyEmoji, true); + expect('πŸ‘¨πŸ‘¨πŸ‘¨πŸ‘¨'.isOnlyEmoji, false); + expect('⭐⭐⭐'.isOnlyEmoji, true); + expect('⭕⭕⭐'.isOnlyEmoji, true); + expect('βœ…'.isOnlyEmoji, true); + expect('☺️'.isOnlyEmoji, true); + }); + + test('Korean vowels', () { + expect('ㅏ'.isOnlyEmoji, false); + expect('γ…‘'.isOnlyEmoji, false); + expect('γ…“'.isOnlyEmoji, false); + expect('γ…•'.isOnlyEmoji, false); + expect('γ…—'.isOnlyEmoji, false); + expect('γ…›'.isOnlyEmoji, false); + expect('γ…œ'.isOnlyEmoji, false); + expect('γ… '.isOnlyEmoji, false); + expect('γ…‘'.isOnlyEmoji, false); + expect('γ…£'.isOnlyEmoji, false); + }); + + test('Korean consonants', () { + expect('γ„±'.isOnlyEmoji, false); + expect('γ„΄'.isOnlyEmoji, false); + expect('γ„·'.isOnlyEmoji, false); + expect('γ„Ή'.isOnlyEmoji, false); + expect('ㅁ'.isOnlyEmoji, false); + expect('γ…‚'.isOnlyEmoji, false); + expect('γ……'.isOnlyEmoji, false); + expect('γ…‡'.isOnlyEmoji, false); + expect('γ…ˆ'.isOnlyEmoji, false); + expect('γ…Š'.isOnlyEmoji, false); + expect('γ…‹'.isOnlyEmoji, false); + expect('γ…Œ'.isOnlyEmoji, false); + expect('ㅍ'.isOnlyEmoji, false); + expect('γ…Ž'.isOnlyEmoji, false); + }); + + test('Korean syllables', () { + expect('κ°€'.isOnlyEmoji, false); + expect('λ‚˜'.isOnlyEmoji, false); + expect('λ‹€'.isOnlyEmoji, false); + expect('라'.isOnlyEmoji, false); + expect('마'.isOnlyEmoji, false); + expect('λ°”'.isOnlyEmoji, false); + expect('사'.isOnlyEmoji, false); + expect('μ•„'.isOnlyEmoji, false); + expect('자'.isOnlyEmoji, false); + expect('μ°¨'.isOnlyEmoji, false); + expect('μΉ΄'.isOnlyEmoji, false); + expect('타'.isOnlyEmoji, false); + expect('파'.isOnlyEmoji, false); + expect('ν•˜'.isOnlyEmoji, false); + }); + + // https://github.com/GetStream/stream-chat-flutter/issues/1502 + test('Issue:#1502', () { + expect('γ„΄'.isOnlyEmoji, false); + expect('γ„΄γ…‡'.isOnlyEmoji, false); + expect('γ…‡γ…‹'.isOnlyEmoji, false); + }); + + // https://github.com/GetStream/stream-chat-flutter/issues/1505 + test('Issue:#1505', () { + expect('γ…Žγ…Žγ…Ž'.isOnlyEmoji, false); + expect('γ…Žγ…Žγ…Žγ…Ž'.isOnlyEmoji, false); }); }); }