From c37bcb0e4a878d4f4c0e47988adb8624131c82cd Mon Sep 17 00:00:00 2001 From: TheArcaneBrony Date: Thu, 9 Nov 2023 07:38:33 +0100 Subject: event types --- .../Shared/TimelineComponents/BaseTimelineItem.razor | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'MatrixRoomUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor') diff --git a/MatrixRoomUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor b/MatrixRoomUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor index 9efeaab..8d608e3 100644 --- a/MatrixRoomUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor +++ b/MatrixRoomUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor @@ -1,5 +1,7 @@ @using LibMatrix +@using LibMatrix.EventTypes.Spec.State @using LibMatrix.Homeservers +@using LibMatrix.Responses

BaseTimelineItem

@code { @@ -13,4 +15,19 @@ [Parameter] public AuthenticatedHomeserverGeneric Homeserver { get; set; } -} + public List EventsBefore => Events.TakeWhile(e => e.EventId != Event.EventId).ToList(); + + public List MatchingEventsBefore => EventsBefore.Where(x => x.Type == Event.Type && x.StateKey == Event.StateKey).ToList(); + + public StateEventResponse? PreviousState => MatchingEventsBefore.LastOrDefault(); + + public RoomMemberEventContent? CurrentSenderMemberEventContent => EventsBefore.LastOrDefault(x => x.Type == "m.room.member" && x.StateKey == Event.Sender)? + .TypedContent as RoomMemberEventContent; + + public UserProfileResponse CurrentSenderProfile => new() { DisplayName = CurrentSenderMemberEventContent?.DisplayName, AvatarUrl = CurrentSenderMemberEventContent?.AvatarUrl }; + + public bool HasPreviousMessage => EventsBefore.Last() is { Type: "m.room.message" } response && response.Sender == Event.Sender; + + + +} \ No newline at end of file -- cgit 1.5.1