diff options
Diffstat (limited to 'MatrixUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor')
-rw-r--r-- | MatrixUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/MatrixUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor b/MatrixUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor new file mode 100644 index 0000000..8d608e3 --- /dev/null +++ b/MatrixUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor @@ -0,0 +1,33 @@ +@using LibMatrix +@using LibMatrix.EventTypes.Spec.State +@using LibMatrix.Homeservers +@using LibMatrix.Responses +<h3>BaseTimelineItem</h3> + +@code { + + [Parameter] + public StateEventResponse Event { get; set; } + + [Parameter] + public List<StateEventResponse> Events { get; set; } + + [Parameter] + public AuthenticatedHomeserverGeneric Homeserver { get; set; } + + public List<StateEventResponse> EventsBefore => Events.TakeWhile(e => e.EventId != Event.EventId).ToList(); + + public List<StateEventResponse> 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 |