forked from Nexus/nexus
allow redacting/removing reactions
This commit is contained in:
parent
4ff507e93f
commit
4954fb8c09
2 changed files with 46 additions and 3 deletions
|
|
@ -12,6 +12,7 @@ import "package:nexus/controllers/rooms_controller.dart";
|
|||
import "package:nexus/controllers/selected_room_controller.dart";
|
||||
import "package:nexus/models/configs/messages_config.dart";
|
||||
import "package:nexus/models/configs/message_config.dart";
|
||||
import "package:nexus/models/requests/get_related_events_request.dart";
|
||||
import "package:nexus/models/requests/get_room_state_request.dart";
|
||||
import "package:nexus/models/requests/paginate_request.dart";
|
||||
import "package:nexus/models/requests/redact_event_request.dart";
|
||||
|
|
@ -329,6 +330,39 @@ class RoomChatController extends AsyncNotifier<InMemoryChatController> {
|
|||
return await controller.scrollToMessage(message.id);
|
||||
}
|
||||
|
||||
Future<void> removeReaction(
|
||||
String reaction,
|
||||
Message message,
|
||||
String userId,
|
||||
) async {
|
||||
final client = ref.watch(ClientController.provider.notifier);
|
||||
final allReactionEvents = await client.getRelatedEvents(
|
||||
GetRelatedEventsRequest(
|
||||
roomId: roomId,
|
||||
eventId: message.id,
|
||||
relationType: "m.annotation",
|
||||
),
|
||||
);
|
||||
|
||||
final reactionEvents = allReactionEvents
|
||||
?.where((event) => event.redactedBy == null)
|
||||
.toIList();
|
||||
|
||||
final reactionEvent = reactionEvents?.firstWhereOrNull(
|
||||
(event) =>
|
||||
event.authorId == userId &&
|
||||
event.content["m.relates_to"]?["key"] == reaction,
|
||||
);
|
||||
|
||||
if (reactionEvent != null) {
|
||||
await ref
|
||||
.watch(ClientController.provider.notifier)
|
||||
.redactEvent(
|
||||
RedactEventRequest(eventId: reactionEvent.eventId, roomId: roomId),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> sendReaction(String reaction, Message message) async {
|
||||
final client = ref.watch(ClientController.provider.notifier);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue