redact support

This commit is contained in:
Henry Hiles 2026-01-28 22:59:09 +00:00
commit 15ccddfad5
No known key found for this signature in database
3 changed files with 25 additions and 7 deletions

View file

@ -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/get_related_events_request.dart";
import "package:nexus/models/login_request.dart"; import "package:nexus/models/login_request.dart";
import "package:nexus/models/profile.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/report_request.dart";
import "package:nexus/models/room.dart"; import "package:nexus/models/room.dart";
import "package:nexus/models/sync_data.dart"; import "package:nexus/models/sync_data.dart";
@ -113,6 +114,9 @@ class ClientController extends AsyncNotifier<int> {
return response.buf.toJson(); return response.buf.toJson();
} }
Future<void> redactEvent(RedactEventRequest report) =>
sendCommand("redact_event", report.toJson());
Future<bool> verify(String recoveryKey) async { Future<bool> verify(String recoveryKey) async {
try { try {
await sendCommand("verify", {"recovery_key": recoveryKey}); await sendCommand("verify", {"recovery_key": recoveryKey});

View file

@ -9,6 +9,7 @@ import "package:nexus/controllers/new_events_controller.dart";
import "package:nexus/controllers/selected_room_controller.dart"; import "package:nexus/controllers/selected_room_controller.dart";
import "package:nexus/helpers/extensions/event_to_message.dart"; import "package:nexus/helpers/extensions/event_to_message.dart";
import "package:nexus/helpers/extensions/list_to_messages.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"; import "package:nexus/models/relation_type.dart";
class RoomChatController extends AsyncNotifier<ChatController> { class RoomChatController extends AsyncNotifier<ChatController> {
@ -84,9 +85,17 @@ class RoomChatController extends AsyncNotifier<ChatController> {
} }
Future<void> deleteMessage(Message message, {String? reason}) async { Future<void> deleteMessage(Message message, {String? reason}) async {
// final controller = await future; final controller = await future;
// await controller.removeMessage(message); await controller.removeMessage(message);
// await room.redactEvent(message.id, reason: reason); await ref
.watch(ClientController.provider.notifier)
.redactEvent(
RedactEventRequest(
eventId: message.id,
roomId: roomId,
reason: reason,
),
);
} }
Future<void> loadOlder() async { Future<void> loadOlder() async {
@ -140,10 +149,12 @@ class RoomChatController extends AsyncNotifier<ChatController> {
} }
Future<chat.User> resolveUser(String id) async { Future<chat.User> resolveUser(String id) async {
// final user = await room.client.getUserProfile(id); final user = await ref
.watch(ClientController.provider.notifier)
.getProfile(id);
return chat.User( return chat.User(
id: id, id: id,
// name: user.displayname, name: user?.displayName,
// imageSource: user.avatarUrl == null // imageSource: user.avatarUrl == null
// ? null // ? null
// : (await ref.watch( // : (await ref.watch(
@ -152,8 +163,8 @@ class RoomChatController extends AsyncNotifier<ChatController> {
); );
} }
static final provider = static final provider = AsyncNotifierProvider.family
AsyncNotifierProvider.family<RoomChatController, ChatController, String>( .autoDispose<RoomChatController, ChatController, String>(
RoomChatController.new, RoomChatController.new,
); );
} }

View file

@ -0,0 +1,3 @@
import "package:nexus/models/report_request.dart";
typedef RedactEventRequest = ReportRequest;