From b65e7138808f0b537d39b6ee4bc1d71fdff6093c Mon Sep 17 00:00:00 2001 From: ggurdin Date: Fri, 7 Jun 2024 15:34:56 -0400 Subject: [PATCH] filter pangea event types from chat list subtitles --- .../utils/get_chat_list_item_subtitle.dart | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/lib/pangea/utils/get_chat_list_item_subtitle.dart b/lib/pangea/utils/get_chat_list_item_subtitle.dart index 2fee578bf..5ccb623d7 100644 --- a/lib/pangea/utils/get_chat_list_item_subtitle.dart +++ b/lib/pangea/utils/get_chat_list_item_subtitle.dart @@ -1,3 +1,4 @@ +import 'package:collection/collection.dart'; import 'package:fluffychat/pangea/constants/language_keys.dart'; import 'package:fluffychat/pangea/constants/model_keys.dart'; import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; @@ -10,6 +11,17 @@ import 'package:matrix/matrix.dart'; import '../../utils/matrix_sdk_extensions/matrix_locals.dart'; class GetChatListItemSubtitle { + final List hideContentKeys = [ + ModelKey.transcription, + ]; + + bool moveBackInTimeline(Event event) => + hideContentKeys.any( + (key) => event.content.tryGet(key) != null, + ) || + event.type.startsWith("p.") || + event.type.startsWith("pangea."); + Future getSubtitle( L10n l10n, Event? event, @@ -22,23 +34,14 @@ class GetChatListItemSubtitle { eventContextId = null; } - final Timeline timeline = - await event.room.getTimeline(eventContextId: eventContextId); - - if (event.content.tryGet(ModelKey.transcription) != null) { - int index = timeline.events.indexWhere( - (e) => e.eventId == event!.eventId, - ); - - while (index < timeline.events.length && - (timeline.events[index].content.tryGet(ModelKey.transcription) != - null || - timeline.events[index].type != EventTypes.Message)) { - index++; - } + final Timeline timeline = await event.room.getTimeline( + eventContextId: eventContextId, + ); - if (timeline.events.length > index + 1) { - event = timeline.events[index]; + if (moveBackInTimeline(event)) { + event = timeline.events.firstWhereOrNull((e) => !moveBackInTimeline(e)); + if (event == null) { + return l10n.emptyChat; } }