diff --git a/lib/config/setting_keys.dart b/lib/config/setting_keys.dart index e6ac34e8c..aed48d5d2 100644 --- a/lib/config/setting_keys.dart +++ b/lib/config/setting_keys.dart @@ -75,6 +75,7 @@ enum AppSettings { // #Pangea volume('pangea.volume', 1.0), // Pangea# + emojiSuggestionLocale('emoji_suggestion_locale', ''), enableSoftLogout('chat.fluffy.enable_soft_logout', false); final String key; diff --git a/lib/pages/chat/chat_input_row.dart b/lib/pages/chat/chat_input_row.dart index 068b90cff..9c48a397c 100644 --- a/lib/pages/chat/chat_input_row.dart +++ b/lib/pages/chat/chat_input_row.dart @@ -1,8 +1,5 @@ -// import 'package:flutter/material.dart'; - // import 'package:animations/animations.dart'; -// import 'package:matrix/matrix.dart'; - +// import 'package:emoji_picker_flutter/locales/default_emoji_set_locale.dart'; // import 'package:fluffychat/config/setting_keys.dart'; // import 'package:fluffychat/l10n/l10n.dart'; // import 'package:fluffychat/pages/chat/recording_input_row.dart'; @@ -11,6 +8,9 @@ // import 'package:fluffychat/utils/platform_infos.dart'; // import 'package:fluffychat/widgets/avatar.dart'; // import 'package:fluffychat/widgets/matrix.dart'; +// import 'package:flutter/material.dart'; +// import 'package:matrix/matrix.dart'; + // import '../../config/themes.dart'; // import 'chat.dart'; // import 'input_bar.dart'; @@ -334,6 +334,14 @@ // filled: false, // ), // onChanged: controller.onInputBarChanged, +// suggestionEmojis: getDefaultEmojiLocale( +// AppSettings.emojiSuggestionLocale.value.isNotEmpty +// ? Locale(AppSettings.emojiSuggestionLocale.value) +// : Localizations.localeOf(context), +// ).fold( +// [], +// (emojis, category) => emojis..addAll(category.emoji), +// ), // ), // ), // ), diff --git a/lib/pages/chat/input_bar.dart b/lib/pages/chat/input_bar.dart index 5d9563e6c..00e1acbae 100644 --- a/lib/pages/chat/input_bar.dart +++ b/lib/pages/chat/input_bar.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:emojis/emoji.dart'; +import 'package:emoji_picker_flutter/emoji_picker_flutter.dart'; import 'package:matrix/matrix.dart'; import 'package:slugify/slugify.dart'; @@ -42,6 +42,7 @@ class InputBar extends StatelessWidget { final ValueChanged? onChanged; final bool? autofocus; final bool readOnly; + final List suggestionEmojis; const InputBar({ required this.room, @@ -61,6 +62,7 @@ class InputBar extends StatelessWidget { required this.choreographer, required this.showNextMatch, // Pangea# + required this.suggestionEmojis, super.key, }); @@ -135,13 +137,12 @@ class InputBar extends StatelessWidget { } } } + // aside of emote packs, also propose normal (tm) unicode emojis - final matchingUnicodeEmojis = Emoji.all() - .where( - (element) => [element.name, ...element.keywords] - .any((element) => element.toLowerCase().contains(emoteSearch)), - ) + final matchingUnicodeEmojis = suggestionEmojis + .where((emoji) => emoji.name.toLowerCase().contains(emoteSearch)) .toList(); + // sort by the index of the search term in the name in order to have // best matches first // (thanks for the hint by github.com/nextcloud/circles devs) @@ -161,9 +162,8 @@ class InputBar extends StatelessWidget { for (final emoji in matchingUnicodeEmojis) { ret.add({ 'type': 'emoji', - 'emoji': emoji.char, - // don't include sub-group names, splitting at `:` hence - 'label': '${emoji.char} - ${emoji.name.split(':').first}', + 'emoji': emoji.emoji, + 'label': emoji.name, 'current_word': ':$emoteSearch', }); if (ret.length > maxResults) { @@ -269,7 +269,18 @@ class InputBar extends StatelessWidget { waitDuration: const Duration(days: 1), // don't show on hover child: ListTile( onTap: () => onSelected(suggestion), - title: Text(label, style: const TextStyle(fontFamily: 'RobotoMono')), + leading: SizedBox.square( + dimension: size, + child: Text( + suggestion['emoji']!, + style: const TextStyle(fontSize: 16), + ), + ), + title: Text( + label, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), ), ); } diff --git a/pubspec.lock b/pubspec.lock index 8b523789e..94b3860bc 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -513,14 +513,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.3.0" - emojis: - dependency: "direct main" - description: - name: emojis - sha256: "2e4d847c3f1e2670f30dc355909ce6fa7808b4e626c34a4dd503a360995a38bf" - url: "https://pub.dev" - source: hosted - version: "0.9.9" equatable: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 159b5afe3..835079c44 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -31,7 +31,6 @@ dependencies: diacritic: ^0.1.6 dynamic_color: ^1.8.1 emoji_picker_flutter: ^4.3.0 - emojis: ^0.9.9 file_picker: ^10.3.6 file_selector: ^1.0.4 flutter: