about summary refs log tree commit diff
path: root/MatrixUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor
blob: 08aeffecac4a488fd8e7b421dc6471d1994c20e4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@using LibMatrix
@using LibMatrix.EventTypes.Spec.State
@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 IEnumerable<StateEventResponse> EventsBefore => Events.TakeWhile(e => e.EventId != Event.EventId);

    public IEnumerable<StateEventResponse> MatchingEventsBefore => EventsBefore.Where(x => x.Type == Event.Type && x.StateKey == Event.StateKey);

    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;



}