make picker a little more generic

This commit is contained in:
Henry Hiles 2026-09-16 12:56:48 -04:00
commit ddc83c4a4b
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs
2 changed files with 17 additions and 11 deletions

View file

@ -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<EmojiCategory> extraCategories = const IList.empty(),
final IList<EmojiCategory> prependCategories = const IList.empty(),
final IList<EmojiCategory> appendCategories = const IList.empty(),
required final FutureOr<void> 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,6 +74,7 @@ final class const EmojiPicker({
leading: Icon(Icons.search),
onChanged: (value) => search.value = value,
trailing: [
if (allowFreeText)
IconButton(
onPressed: search.value.isEmpty
? null

View file

@ -247,6 +247,7 @@ final class const RoomChat({
onSelection: (value) => notifier
.sendReaction(value, event)
.onError(showError),
allowFreeText: true,
),
);
},