diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 13238a6a8..c86e82685 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -855,7 +855,7 @@ class ChatController extends State future: () async { if (event.status.isSent) { if (event.canRedact) { - await event.redactEvent(reason: reason); + await redactAndUnpinEvent(event, reason: reason); } else { final client = currentRoomBundle.firstWhere( (cl) => selectedEvents.first.senderId == cl!.userID, @@ -865,7 +865,8 @@ class ChatController extends State return; } final room = client.getRoomById(roomId)!; - await Event.fromJson(event.toJson(), room).redactEvent( + await redactAndUnpinEvent( + Event.fromJson(event.toJson(), room), reason: reason, ); } @@ -1204,6 +1205,18 @@ class ChatController extends State ); } + Future redactAndUnpinEvent( + Event event, { + String? reason, + String? txid, + }) async { + final events = room.pinnedEventIds + ..removeWhere((oldEvent) => oldEvent == event.eventId); + room.setPinnedEvents(events); + + return await room.redactEvent(event.eventId, reason: reason, txid: txid); + } + Timer? _storeInputTimeoutTimer; static const Duration _storeInputTimeout = Duration(milliseconds: 500);