forked from Nexus/nexus
add support for showing recent emoji
This commit is contained in:
parent
5acdbb5be0
commit
ec1603b828
5 changed files with 58 additions and 5 deletions
|
|
@ -2,7 +2,7 @@ import "dart:io";
|
||||||
|
|
||||||
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||||
import "package:file_selector/file_selector.dart";
|
import "package:file_selector/file_selector.dart";
|
||||||
import "package:material_emoji_picker/material_emoji_picker.dart";
|
import "package:nexus/widgets/emoji_picker.dart";
|
||||||
import "package:material_ui/material_ui.dart";
|
import "package:material_ui/material_ui.dart";
|
||||||
import "package:flutter/services.dart";
|
import "package:flutter/services.dart";
|
||||||
import "package:flutter_hooks/flutter_hooks.dart";
|
import "package:flutter_hooks/flutter_hooks.dart";
|
||||||
|
|
|
||||||
53
lib/widgets/emoji_picker.dart
Normal file
53
lib/widgets/emoji_picker.dart
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
import "dart:async";
|
||||||
|
|
||||||
|
import "package:collection/collection.dart";
|
||||||
|
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||||
|
import "package:hooks_riverpod/hooks_riverpod.dart";
|
||||||
|
import "package:material_emoji_picker/material_emoji_picker.dart" as upstream;
|
||||||
|
import "package:material_ui/material_ui.dart";
|
||||||
|
import "package:nexus/controllers/account_data.dart";
|
||||||
|
import "package:nexus/helpers/extensions/better_when.dart";
|
||||||
|
|
||||||
|
class const EmojiPicker({
|
||||||
|
required final FutureOr<void> Function(String value) onSelection,
|
||||||
|
final bool allowFreeText = false,
|
||||||
|
super.key,
|
||||||
|
}) extends ConsumerWidget {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context, WidgetRef ref) => ref
|
||||||
|
.watch(upstream.EmojiController.provider)
|
||||||
|
.betterWhen(
|
||||||
|
data: (categories) => upstream.EmojiPicker(
|
||||||
|
onSelection: (value) async {
|
||||||
|
//
|
||||||
|
await onSelection(value);
|
||||||
|
},
|
||||||
|
allowFreeText: allowFreeText,
|
||||||
|
prependCategories: .new([
|
||||||
|
.new(
|
||||||
|
icon: Icon(Icons.history),
|
||||||
|
name: "Recent",
|
||||||
|
emojis: .new(
|
||||||
|
ref
|
||||||
|
.watch(
|
||||||
|
AccountDataController.provider.select(
|
||||||
|
(value) => value.recentEmoji
|
||||||
|
.map((entry) => entry.emoji)
|
||||||
|
.toIList(),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.map(
|
||||||
|
(emoji) => categories
|
||||||
|
.map((element) => element.emojis)
|
||||||
|
.flattened
|
||||||
|
.firstWhereOrNull(
|
||||||
|
(element) => element.value == emoji,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.nonNulls,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -17,7 +17,7 @@ import "package:nexus/models/content/message.dart";
|
||||||
import "package:nexus/models/event.dart";
|
import "package:nexus/models/event.dart";
|
||||||
import "package:nexus/models/relation_type.dart";
|
import "package:nexus/models/relation_type.dart";
|
||||||
import "package:nexus/widgets/composer/composer.dart";
|
import "package:nexus/widgets/composer/composer.dart";
|
||||||
import "package:material_emoji_picker/material_emoji_picker.dart";
|
import "package:nexus/widgets/emoji_picker.dart";
|
||||||
import "package:nexus/widgets/pinned_events_drawer.dart";
|
import "package:nexus/widgets/pinned_events_drawer.dart";
|
||||||
import "package:nexus/widgets/renderers/event.dart";
|
import "package:nexus/widgets/renderers/event.dart";
|
||||||
import "package:nexus/widgets/member_list.dart";
|
import "package:nexus/widgets/member_list.dart";
|
||||||
|
|
|
||||||
|
|
@ -898,10 +898,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: material_emoji_picker
|
name: material_emoji_picker
|
||||||
sha256: "1547195a419134cf0b2396d119dc873589804f461424917b1b61a0966bfb7e5a"
|
sha256: bb1d5a467e2f83fd13dc83bd5a3c827bbfc525041921ed74a1d85b905fdc77e8
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0+1"
|
version: "1.0.2"
|
||||||
material_ui:
|
material_ui:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ dependencies:
|
||||||
unifiedpush_storage_shared_preferences: 1.0.0
|
unifiedpush_storage_shared_preferences: 1.0.0
|
||||||
flutter_local_notifications: 22.3.0
|
flutter_local_notifications: 22.3.0
|
||||||
flutter_local_notifications_linux: 8.0.1
|
flutter_local_notifications_linux: 8.0.1
|
||||||
material_emoji_picker: 1.0.0+1
|
material_emoji_picker: 1.0.2
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
build_runner: 2.16.1
|
build_runner: 2.16.1
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue