diff --git a/commet/lib/client/matrix/timeline_events/matrix_timeline_event_mixin_related.dart b/commet/lib/client/matrix/timeline_events/matrix_timeline_event_mixin_related.dart index 00872b914..a00104b18 100644 --- a/commet/lib/client/matrix/timeline_events/matrix_timeline_event_mixin_related.dart +++ b/commet/lib/client/matrix/timeline_events/matrix_timeline_event_mixin_related.dart @@ -8,14 +8,21 @@ mixin MatrixTimelineEventRelated on MatrixTimelineEvent String? get relatedEventId => _getRelatedEventId(); @override - EventRelationshipType? get relationshipType => - switch (event.relationshipType) { - "m.in_reply_to" => EventRelationshipType.reply, - "m.thread" => _getThreadRichResponseId() != null - ? EventRelationshipType.reply - : null, - _ => null, - }; + EventRelationshipType? get relationshipType { + var result = switch (event.relationshipType) { + "m.in_reply_to" => EventRelationshipType.reply, + "m.thread" => + _getThreadRichResponseId() != null ? EventRelationshipType.reply : null, + _ => null, + }; + + if (result != null) return result; + + var reply = event.inReplyToEventId(); + if (reply != null) return EventRelationshipType.reply; + + return null; + } String? _getThreadRichResponseId() { var rel = event.content["m.relates_to"] as Map?; @@ -41,6 +48,9 @@ mixin MatrixTimelineEventRelated on MatrixTimelineEvent return _getThreadRichResponseId(); } + var reply = event.inReplyToEventId(); + if (reply != null) return reply; + return event.relationshipEventId; } }