diff --git a/lib/widgets/emoji_picker.dart b/lib/widgets/emoji_picker.dart index de455c7..bb395f3 100644 --- a/lib/widgets/emoji_picker.dart +++ b/lib/widgets/emoji_picker.dart @@ -12,8 +12,10 @@ import "package:nexus/widgets/divider_text.dart"; import "package:super_sliver_list/super_sliver_list.dart"; final class const EmojiPicker({ - final IList extraCategories = const IList.empty(), + final IList prependCategories = const IList.empty(), + final IList appendCategories = const IList.empty(), required final FutureOr Function(String value) onSelection, + final bool allowFreeText = false, super.key, }) extends HookConsumerWidget { @override @@ -59,7 +61,9 @@ final class const EmojiPicker({ .betterWhen( data: (categories) { final combined = useMemoized( - () => categories.addAll(extraCategories), + () => prependCategories + .addAll(categories) + .addAll(appendCategories), ); return Column( @@ -70,16 +74,17 @@ final class const EmojiPicker({ leading: Icon(Icons.search), onChanged: (value) => search.value = value, trailing: [ - IconButton( - onPressed: search.value.isEmpty - ? null - : () async { - Navigator.of(context).pop(); + if (allowFreeText) + IconButton( + onPressed: search.value.isEmpty + ? null + : () async { + Navigator.of(context).pop(); - await onSelection(search.value); - }, - icon: Icon(Icons.send), - ), + await onSelection(search.value); + }, + icon: Icon(Icons.send), + ), ], ), SizedBox( diff --git a/lib/widgets/room_chat.dart b/lib/widgets/room_chat.dart index 8db1dcd..9a25274 100644 --- a/lib/widgets/room_chat.dart +++ b/lib/widgets/room_chat.dart @@ -247,6 +247,7 @@ final class const RoomChat({ onSelection: (value) => notifier .sendReaction(value, event) .onError(showError), + allowFreeText: true, ), ); },