mirror of
https://github.com/nostrlabs-io/zap-stream-flutter.git
synced 2025-06-16 20:08:50 +00:00
@ -1,5 +1,4 @@
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:emoji_picker_flutter/emoji_picker_flutter.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:ndk/ndk.dart';
|
||||
import 'package:ndk/shared/nips/nip19/nip19.dart';
|
||||
@ -8,8 +7,8 @@ import 'package:zap_stream_flutter/const.dart';
|
||||
import 'package:zap_stream_flutter/theme.dart';
|
||||
import 'package:zap_stream_flutter/utils.dart';
|
||||
import 'package:zap_stream_flutter/widgets/avatar.dart';
|
||||
import 'package:zap_stream_flutter/widgets/emoji.dart';
|
||||
import 'package:zap_stream_flutter/widgets/profile.dart';
|
||||
import 'package:zap_stream_flutter/widgets/reaction.dart';
|
||||
|
||||
class WriteMessageWidget extends StatefulWidget {
|
||||
final StreamEvent stream;
|
||||
@ -24,6 +23,7 @@ class __WriteMessageWidget extends State<WriteMessageWidget> {
|
||||
late final TextEditingController _controller;
|
||||
OverlayEntry? _entry;
|
||||
late FocusNode _focusNode;
|
||||
List<List<String>> _tags = List.empty(growable: true);
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@ -177,11 +177,24 @@ class __WriteMessageWidget extends State<WriteMessageWidget> {
|
||||
color: LAYER_2,
|
||||
borderRadius: DEFAULT_BR,
|
||||
),
|
||||
child: EmojiPicker(
|
||||
onEmojiSelected: (category, emoji) {
|
||||
_controller.text = _controller.text + emoji.emoji;
|
||||
child: EmojiPickerCustom(
|
||||
customEmojiSets: [widget.stream.info.host],
|
||||
onEmojiSelected: (emoji) {
|
||||
_controller.text =
|
||||
_controller.text +
|
||||
(emoji.emoji.startsWith("http")
|
||||
? ":${emoji.name}:"
|
||||
: emoji.emoji);
|
||||
if (emoji.emoji.startsWith("http")) {
|
||||
setState(() {
|
||||
_tags =
|
||||
[
|
||||
..._tags,
|
||||
["emoji", emoji.name, emoji.emoji],
|
||||
].toList();
|
||||
});
|
||||
}
|
||||
},
|
||||
config: emojiPickerConfig,
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -196,13 +209,20 @@ class __WriteMessageWidget extends State<WriteMessageWidget> {
|
||||
final login = ndk.accounts.getLoggedAccount();
|
||||
if (login == null || _controller.text.isEmpty) return;
|
||||
|
||||
var tags = [
|
||||
["a", widget.stream.aTag],
|
||||
..._tags.where(
|
||||
(t) => switch (t[0]) {
|
||||
"emoji" => _controller.text.contains(":${t[1]}:"),
|
||||
_ => true,
|
||||
},
|
||||
),
|
||||
];
|
||||
final chatMsg = Nip01Event(
|
||||
pubKey: login.pubkey,
|
||||
kind: 1311,
|
||||
content: _controller.text.toString(),
|
||||
tags: [
|
||||
["a", widget.stream.aTag],
|
||||
],
|
||||
tags: tags,
|
||||
);
|
||||
_controller.clear();
|
||||
_focusNode.unfocus();
|
||||
|
Reference in New Issue
Block a user