filter pangea event types from chat list subtitles

pull/1183/head
ggurdin 1 year ago
parent 38ca9270d6
commit b65e713880

@ -1,3 +1,4 @@
import 'package:collection/collection.dart';
import 'package:fluffychat/pangea/constants/language_keys.dart'; import 'package:fluffychat/pangea/constants/language_keys.dart';
import 'package:fluffychat/pangea/constants/model_keys.dart'; import 'package:fluffychat/pangea/constants/model_keys.dart';
import 'package:fluffychat/pangea/controllers/pangea_controller.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'; import '../../utils/matrix_sdk_extensions/matrix_locals.dart';
class GetChatListItemSubtitle { class GetChatListItemSubtitle {
final List<String> hideContentKeys = [
ModelKey.transcription,
];
bool moveBackInTimeline(Event event) =>
hideContentKeys.any(
(key) => event.content.tryGet(key) != null,
) ||
event.type.startsWith("p.") ||
event.type.startsWith("pangea.");
Future<String> getSubtitle( Future<String> getSubtitle(
L10n l10n, L10n l10n,
Event? event, Event? event,
@ -22,23 +34,14 @@ class GetChatListItemSubtitle {
eventContextId = null; eventContextId = null;
} }
final Timeline timeline = final Timeline timeline = await event.room.getTimeline(
await event.room.getTimeline(eventContextId: eventContextId); eventContextId: eventContextId,
if (event.content.tryGet(ModelKey.transcription) != null) {
int index = timeline.events.indexWhere(
(e) => e.eventId == event!.eventId,
); );
while (index < timeline.events.length && if (moveBackInTimeline(event)) {
(timeline.events[index].content.tryGet(ModelKey.transcription) != event = timeline.events.firstWhereOrNull((e) => !moveBackInTimeline(e));
null || if (event == null) {
timeline.events[index].type != EventTypes.Message)) { return l10n.emptyChat;
index++;
}
if (timeline.events.length > index + 1) {
event = timeline.events[index];
} }
} }

Loading…
Cancel
Save