feat: Nicer room creation UI

This commit is contained in:
krille-chan 2024-10-19 08:58:02 +02:00
commit 3faf6df558
No known key found for this signature in database
5 changed files with 78 additions and 9 deletions

View file

@ -2,6 +2,36 @@ import 'package:matrix/matrix.dart';
import '../../config/app_config.dart';
extension VisibleInGuiExtension on List<Event> {
List<Event> filterByVisibleInGui({String? exceptionEventId}) {
final visibleEvents =
where((e) => e.isVisibleInGui || e.eventId == exceptionEventId)
.toList();
// Hide creation state events:
if (visibleEvents.isNotEmpty &&
visibleEvents.last.type == EventTypes.RoomCreate) {
var i = visibleEvents.length - 2;
while (i > 0) {
final event = visibleEvents[i];
if (!event.isState) break;
if (event.type == EventTypes.Encryption) {
i--;
continue;
}
if (event.type == EventTypes.RoomMember &&
event.roomMemberChangeType == RoomMemberChangeType.acceptInvite) {
i--;
continue;
}
visibleEvents.removeAt(i);
i--;
}
}
return visibleEvents;
}
}
extension IsStateExtension on Event {
bool get isVisibleInGui =>
// always filter out edit and reaction relationships