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/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<int> {
return response.buf.toJson();
}
Future<void> redactEvent(RedactEventRequest report) =>
sendCommand("redact_event", report.toJson());
Future<bool> verify(String recoveryKey) async {
try {
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/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<ChatController> {
@ -84,9 +85,17 @@ class RoomChatController extends AsyncNotifier<ChatController> {
}
Future<void> 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<void> loadOlder() async {
@ -140,10 +149,12 @@ class RoomChatController extends AsyncNotifier<ChatController> {
}
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(
id: id,
// name: user.displayname,
name: user?.displayName,
// imageSource: user.avatarUrl == null
// ? null
// : (await ref.watch(
@ -152,8 +163,8 @@ class RoomChatController extends AsyncNotifier<ChatController> {
);
}
static final provider =
AsyncNotifierProvider.family<RoomChatController, ChatController, String>(
static final provider = AsyncNotifierProvider.family
.autoDispose<RoomChatController, ChatController, String>(
RoomChatController.new,
);
}