From 15ccddfad51a2aca643425df6336c5a05682a4fa Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Wed, 28 Jan 2026 22:59:09 +0000 Subject: [PATCH] redact support --- lib/controllers/client_controller.dart | 4 ++++ lib/controllers/room_chat_controller.dart | 25 ++++++++++++++++------- lib/models/redact_event_request.dart | 3 +++ 3 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 lib/models/redact_event_request.dart diff --git a/lib/controllers/client_controller.dart b/lib/controllers/client_controller.dart index abd7b1f..5c9ed8f 100644 --- a/lib/controllers/client_controller.dart +++ b/lib/controllers/client_controller.dart @@ -16,6 +16,7 @@ import "package:nexus/models/get_event_request.dart"; import "package:nexus/models/get_related_events_request.dart"; import "package:nexus/models/login_request.dart"; import "package:nexus/models/profile.dart"; +import "package:nexus/models/redact_event_request.dart"; import "package:nexus/models/report_request.dart"; import "package:nexus/models/room.dart"; import "package:nexus/models/sync_data.dart"; @@ -113,6 +114,9 @@ class ClientController extends AsyncNotifier { return response.buf.toJson(); } + Future redactEvent(RedactEventRequest report) => + sendCommand("redact_event", report.toJson()); + Future verify(String recoveryKey) async { try { await sendCommand("verify", {"recovery_key": recoveryKey}); diff --git a/lib/controllers/room_chat_controller.dart b/lib/controllers/room_chat_controller.dart index 0012418..88ae53f 100644 --- a/lib/controllers/room_chat_controller.dart +++ b/lib/controllers/room_chat_controller.dart @@ -9,6 +9,7 @@ import "package:nexus/controllers/new_events_controller.dart"; import "package:nexus/controllers/selected_room_controller.dart"; import "package:nexus/helpers/extensions/event_to_message.dart"; import "package:nexus/helpers/extensions/list_to_messages.dart"; +import "package:nexus/models/redact_event_request.dart"; import "package:nexus/models/relation_type.dart"; class RoomChatController extends AsyncNotifier { @@ -84,9 +85,17 @@ class RoomChatController extends AsyncNotifier { } Future deleteMessage(Message message, {String? reason}) async { - // final controller = await future; - // await controller.removeMessage(message); - // await room.redactEvent(message.id, reason: reason); + final controller = await future; + await controller.removeMessage(message); + await ref + .watch(ClientController.provider.notifier) + .redactEvent( + RedactEventRequest( + eventId: message.id, + roomId: roomId, + reason: reason, + ), + ); } Future loadOlder() async { @@ -140,10 +149,12 @@ class RoomChatController extends AsyncNotifier { } Future resolveUser(String id) async { - // final user = await room.client.getUserProfile(id); + final user = await ref + .watch(ClientController.provider.notifier) + .getProfile(id); return chat.User( id: id, - // name: user.displayname, + name: user?.displayName, // imageSource: user.avatarUrl == null // ? null // : (await ref.watch( @@ -152,8 +163,8 @@ class RoomChatController extends AsyncNotifier { ); } - static final provider = - AsyncNotifierProvider.family( + static final provider = AsyncNotifierProvider.family + .autoDispose( RoomChatController.new, ); } diff --git a/lib/models/redact_event_request.dart b/lib/models/redact_event_request.dart new file mode 100644 index 0000000..b742351 --- /dev/null +++ b/lib/models/redact_event_request.dart @@ -0,0 +1,3 @@ +import "package:nexus/models/report_request.dart"; + +typedef RedactEventRequest = ReportRequest;