Merge pull request #308 from pangeachat/subtitle-filter

filter pangea event types from chat list subtitles
pull/1183/head
ggurdin 1 year ago committed by GitHub
commit 9ce4924dff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -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 &&
(timeline.events[index].content.tryGet(ModelKey.transcription) !=
null ||
timeline.events[index].type != EventTypes.Message)) {
index++;
}
if (timeline.events.length > index + 1) { if (moveBackInTimeline(event)) {
event = timeline.events[index]; event = timeline.events.firstWhereOrNull((e) => !moveBackInTimeline(e));
if (event == null) {
return l10n.emptyChat;
} }
} }

Loading…
Cancel
Save