some fixes
This commit is contained in:
parent
11a946e6ea
commit
99e19c3237
3 changed files with 32 additions and 19 deletions
|
|
@ -22,11 +22,12 @@ class RoomChatController extends AsyncNotifier<ChatController> {
|
|||
|
||||
if (event.type == EventTypes.Redaction) {
|
||||
final controller = await future;
|
||||
await controller.removeMessage(
|
||||
controller.messages.firstWhere(
|
||||
(message) => message.id == event.redacts,
|
||||
),
|
||||
final message = controller.messages.firstWhereOrNull(
|
||||
(message) => message.id == event.redacts,
|
||||
);
|
||||
if (message == null) return;
|
||||
|
||||
await controller.removeMessage(message);
|
||||
} else {
|
||||
final message = await event.toMessage(includeEdits: true);
|
||||
if (event.relationshipType == RelationshipTypes.edit) {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ extension EventToMessage on Event {
|
|||
? null
|
||||
: await room.getEventById(replyId);
|
||||
|
||||
final sender =
|
||||
await event.fetchSenderUser() ?? event.senderFromMemoryOrFallback;
|
||||
final newContent = event.content["m.new_content"] as Map?;
|
||||
final metadata = {
|
||||
"formatted":
|
||||
|
|
@ -26,9 +28,8 @@ extension EventToMessage on Event {
|
|||
event.body,
|
||||
"reply": await replyEvent?.toMessage(mustBeText: true),
|
||||
"eventType": event.type,
|
||||
"displayName":
|
||||
event.senderFromMemoryOrFallback.displayName ??
|
||||
event.senderFromMemoryOrFallback.id,
|
||||
"avatarUrl": sender.avatarUrl.toString(),
|
||||
"displayName": sender.displayName ?? sender.id,
|
||||
"txnId": transactionId,
|
||||
};
|
||||
|
||||
|
|
@ -107,7 +108,7 @@ extension EventToMessage on Event {
|
|||
id: eventId,
|
||||
authorId: senderId,
|
||||
text:
|
||||
"${event.senderFromMemoryOrFallback.displayName} ${switch (Membership.values.firstWhereOrNull((membership) => membership.name == event.content["membership"])) {
|
||||
"${event.asUser.displayName ?? event.asUser.id} ${switch (Membership.values.firstWhereOrNull((membership) => membership.name == event.content["membership"])) {
|
||||
Membership.invite => "was invited to",
|
||||
Membership.join => "joined",
|
||||
Membership.leave => "left",
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ import "dart:io";
|
|||
import "package:flutter/material.dart";
|
||||
import "package:flutter/services.dart";
|
||||
import "package:flutter_chat_core/flutter_chat_core.dart";
|
||||
import "package:flutter_chat_ui/flutter_chat_ui.dart";
|
||||
import "package:flutter_hooks/flutter_hooks.dart";
|
||||
import "package:fluttertagger/fluttertagger.dart";
|
||||
import "package:hooks_riverpod/hooks_riverpod.dart";
|
||||
|
|
@ -35,17 +34,22 @@ class ChatBox extends HookConsumerWidget {
|
|||
|
||||
Future<void> send() => ref
|
||||
.watch(RoomChatController.provider(room).notifier)
|
||||
.send(controller.value.text);
|
||||
.send(controller.value.text, replyTo: replyToMessage);
|
||||
|
||||
final node = useFocusNode(
|
||||
onKeyEvent: (_, event) {
|
||||
if (event is KeyDownEvent &&
|
||||
event.logicalKey == LogicalKeyboardKey.enter &&
|
||||
!(Platform.isAndroid || Platform.isIOS) ^
|
||||
HardwareKeyboard.instance.isShiftPressed) {
|
||||
send();
|
||||
return KeyEventResult.handled;
|
||||
if (event is! KeyDownEvent || Platform.isAndroid || Platform.isIOS) {
|
||||
if (event.logicalKey == LogicalKeyboardKey.enter &&
|
||||
!HardwareKeyboard.instance.isShiftPressed) {
|
||||
send();
|
||||
return KeyEventResult.handled;
|
||||
}
|
||||
if (event.logicalKey == LogicalKeyboardKey.escape) {
|
||||
onDismiss();
|
||||
return KeyEventResult.handled;
|
||||
}
|
||||
}
|
||||
|
||||
return KeyEventResult.ignored;
|
||||
},
|
||||
);
|
||||
|
|
@ -73,10 +77,17 @@ class ChatBox extends HookConsumerWidget {
|
|||
spacing: 8,
|
||||
children: [
|
||||
SizedBox(width: 4),
|
||||
Avatar(
|
||||
userId: replyToMessage!.authorId,
|
||||
AvatarOrHash(
|
||||
ref
|
||||
.watch(
|
||||
AvatarController.provider(
|
||||
replyToMessage!.metadata!["avatarUrl"],
|
||||
),
|
||||
)
|
||||
.whenOrNull(data: (data) => data),
|
||||
replyToMessage!.metadata!["displayName"].toString(),
|
||||
headers: room.client.headers,
|
||||
size: 16,
|
||||
height: 16,
|
||||
),
|
||||
Text(
|
||||
replyToMessage!.metadata?["displayName"] ??
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue