add support for sending emojis through a custom picker
This commit is contained in:
parent
dc1eb52fe0
commit
e16a780fa3
3 changed files with 71 additions and 0 deletions
|
|
@ -1,3 +1,5 @@
|
||||||
|
import "package:emoji_text_field/emoji_text_field.dart";
|
||||||
|
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||||
import "package:flutter/material.dart";
|
import "package:flutter/material.dart";
|
||||||
import "package:flutter/services.dart";
|
import "package:flutter/services.dart";
|
||||||
import "package:flutter_chat_core/flutter_chat_core.dart";
|
import "package:flutter_chat_core/flutter_chat_core.dart";
|
||||||
|
|
@ -6,6 +8,7 @@ import "package:flutter_hooks/flutter_hooks.dart";
|
||||||
import "package:flyer_chat_file_message/flyer_chat_file_message.dart";
|
import "package:flyer_chat_file_message/flyer_chat_file_message.dart";
|
||||||
import "package:flyer_chat_system_message/flyer_chat_system_message.dart";
|
import "package:flyer_chat_system_message/flyer_chat_system_message.dart";
|
||||||
import "package:hooks_riverpod/hooks_riverpod.dart";
|
import "package:hooks_riverpod/hooks_riverpod.dart";
|
||||||
|
import "package:nexus/controllers/account_data_controller.dart";
|
||||||
import "package:nexus/controllers/client_controller.dart";
|
import "package:nexus/controllers/client_controller.dart";
|
||||||
import "package:nexus/controllers/client_state_controller.dart";
|
import "package:nexus/controllers/client_state_controller.dart";
|
||||||
import "package:nexus/controllers/power_level_controller.dart";
|
import "package:nexus/controllers/power_level_controller.dart";
|
||||||
|
|
@ -84,6 +87,62 @@ class RoomChat extends HookConsumerWidget {
|
||||||
List<PopupMenuEntry> getMessageOptions(Message message) {
|
List<PopupMenuEntry> getMessageOptions(Message message) {
|
||||||
final isSentByMe = message.authorId == userId;
|
final isSentByMe = message.authorId == userId;
|
||||||
return [
|
return [
|
||||||
|
PopupMenuItem(
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
...{
|
||||||
|
...ref.watch(
|
||||||
|
AccountDataController.provider.select(
|
||||||
|
(value) => IList(
|
||||||
|
value["m.recent_emoji"]?.content["recent_emoji"] ??
|
||||||
|
[],
|
||||||
|
).map((entry) => entry["emoji"]),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
"👍",
|
||||||
|
"🤣",
|
||||||
|
"😭",
|
||||||
|
"🤔",
|
||||||
|
}
|
||||||
|
.toIList()
|
||||||
|
.sublist(0, 4)
|
||||||
|
.map(
|
||||||
|
(emoji) => IconButton(
|
||||||
|
onPressed: () async {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
await notifier
|
||||||
|
.sendReaction(emoji, message)
|
||||||
|
.onError(showError);
|
||||||
|
},
|
||||||
|
icon: Text(emoji),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
IconButton(
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
final controller = TextEditingController();
|
||||||
|
showBottomSheet(
|
||||||
|
context: context,
|
||||||
|
builder: (context) => EmojiKeyboardView(
|
||||||
|
config: EmojiViewConfig(
|
||||||
|
backgroundColor: theme.colorScheme.surfaceContainer,
|
||||||
|
height: 600,
|
||||||
|
),
|
||||||
|
textController: controller
|
||||||
|
..addListener(() async {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
await notifier
|
||||||
|
.sendReaction(controller.text, message)
|
||||||
|
.onError(showError);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
icon: Icon(Icons.emoji_emotions),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
relatedMessage.value = message;
|
relatedMessage.value = message;
|
||||||
|
|
|
||||||
|
|
@ -354,6 +354,15 @@ packages:
|
||||||
url: "https://github.com/hasali19/flutter_dynamic_system_colors"
|
url: "https://github.com/hasali19/flutter_dynamic_system_colors"
|
||||||
source: git
|
source: git
|
||||||
version: "1.8.0"
|
version: "1.8.0"
|
||||||
|
emoji_text_field:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
path: "."
|
||||||
|
ref: HEAD
|
||||||
|
resolved-ref: "0e90703a6e876939be70bd1816c49cf14474de61"
|
||||||
|
url: "https://github.com/Henry-Hiles/emoji_text_field"
|
||||||
|
source: git
|
||||||
|
version: "1.0.0"
|
||||||
encrypt:
|
encrypt:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,9 @@ dependencies:
|
||||||
timeago: ^3.7.1
|
timeago: ^3.7.1
|
||||||
http: ^1.6.0
|
http: ^1.6.0
|
||||||
flutter_linkify: ^6.0.0
|
flutter_linkify: ^6.0.0
|
||||||
|
emoji_text_field:
|
||||||
|
git:
|
||||||
|
url: https://github.com/Henry-Hiles/emoji_text_field
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
build_runner: ^2.4.11
|
build_runner: ^2.4.11
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue