5 files changed, 73 insertions, 38 deletions
diff --git a/MatrixRoomUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor b/MatrixRoomUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor
new file mode 100644
index 0000000..920a38d
--- /dev/null
+++ b/MatrixRoomUtils.Web/Shared/TimelineComponents/BaseTimelineItem.razor
@@ -0,0 +1,15 @@
+@using MatrixRoomUtils.Core.Responses
+<h3>BaseTimelineItem</h3>
+
+@code {
+
+ [Parameter]
+ public StateEventResponse Event { get; set; }
+
+ [Parameter]
+ public List<StateEventResponse> Events { get; set; }
+
+ [Parameter]
+ public AuthenticatedHomeServer HomeServer { get; set; }
+
+}
diff --git a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMemberItem.razor b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMemberItem.razor
index 519e0b2..44eb06e 100644
--- a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMemberItem.razor
+++ b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMemberItem.razor
@@ -1,39 +1,47 @@
@using MatrixRoomUtils.Core.Responses
@using MatrixRoomUtils.Core.StateEventTypes
@using MatrixRoomUtils.Core.StateEventTypes.Spec
+@inherits BaseTimelineItem
-@if (roomMemberData.Membership == "ban") {
- <i>@Event.StateKey was banned</i>
-}
-else if (roomMemberData.Membership == "invite") {
- <i>@Event.StateKey was invited</i>
-}
-else if (roomMemberData.Membership == "join") {
- @if (Event.ReplacesState is not null) {
- <i>@Event.StateKey changed their display name to @(roomMemberData.Displayname ?? Event.Sender)</i>
+@if (roomMemberData is not null) {
+ @if (roomMemberData.Membership == "ban") {
+ <i>@Event.StateKey was banned</i>
+ }
+ else if (roomMemberData.Membership == "invite") {
+ <i>@Event.StateKey was invited</i>
+ }
+ else if (roomMemberData.Membership == "join") {
+ @if (Event.ReplacesState is not null) {
+ <i>@Event.StateKey changed their display name to @(roomMemberData.Displayname ?? Event.Sender)</i>
+ }
+ else {
+ <i><InlineUserItem User="new ProfileResponseEventData()" HomeServer="HomeServer" UserId="@Event.StateKey"></InlineUserItem> joined</i>
+ }
+ }
+ else if (roomMemberData.Membership == "leave") {
+ <i>@Event.StateKey left</i>
+ }
+ else if (roomMemberData.Membership == "knock") {
+ <i>@Event.StateKey knocked</i>
}
else {
- <i><InlineUserItem UserId="@Event.StateKey"></InlineUserItem> joined</i>
+ <i>@Event.StateKey has an unknown state:</i>
+ <pre>
+ @Event.ToJson()
+ </pre>
}
}
-else if (roomMemberData.Membership == "leave") {
- <i>@Event.StateKey left</i>
-}
-else if (roomMemberData.Membership == "knock") {
- <i>@Event.StateKey knocked</i>
-}
else {
- <i>@Event.StateKey has an unknown state:</i>
- <pre>
- @Event.ToJson()
- </pre>
+ <details>
+ <summary>Unknown membership event for @Event.StateKey</summary>
+ <pre>
+ @Event.ToJson()
+ </pre>
+ </details>
}
@code {
- [Parameter]
- public StateEventResponse Event { get; set; }
-
private RoomMemberEventData? roomMemberData => Event.TypedContent as RoomMemberEventData;
-}
\ No newline at end of file
+}
diff --git a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMessageItem.razor b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMessageItem.razor
index b1ce146..bf0e083 100644
--- a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMessageItem.razor
+++ b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMessageItem.razor
@@ -1,11 +1,10 @@
@using MatrixRoomUtils.Core.Responses
+@inherits BaseTimelineItem
+
<pre>
@ObjectExtensions.ToJson(Event.RawContent, indent: false)
</pre>
@code {
- [Parameter]
- public StateEventResponse Event { get; set; }
-
-}
\ No newline at end of file
+}
diff --git a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineRoomCreateItem.razor b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineRoomCreateItem.razor
new file mode 100644
index 0000000..de204a3
--- /dev/null
+++ b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineRoomCreateItem.razor
@@ -0,0 +1,18 @@
+@using MatrixRoomUtils.Core.Responses
+@using MatrixRoomUtils.Core.StateEventTypes.Spec
+@inherits BaseTimelineItem
+
+<p>
+ @Event.Sender created the room with room version @CreationEventContent.RoomVersion
+ @CreationEventContent.Federate ? "and" : "without" federating with other servers.<br/>
+ This room is of type @(CreationEventContent.Type ?? "Untyped room (usually a chat room)")
+</p>
+<pre>
+ @ObjectExtensions.ToJson(Event.RawContent, indent: false)
+</pre>
+
+@code {
+
+ private RoomCreateEventData CreationEventContent => Event.TypedContent as RoomCreateEventData;
+
+}
diff --git a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineUnknownItem.razor b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineUnknownItem.razor
index d8ea7e2..d0871c3 100644
--- a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineUnknownItem.razor
+++ b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineUnknownItem.razor
@@ -1,20 +1,15 @@
-<div>
+@inherits BaseTimelineItem
+<div>
<details style="display: inline;">
<summary>
- <i style="color: red;">
- Unknown event type: <pre style="display: inline;">@Event.Type</pre>
- </i>
+ <i style="color: red;">Unknown event type: <pre style="display: inline;">@Event.Type</pre></i>
</summary>
- <pre>
- @Event.ToJson()
- </pre>
+ <pre>@Event.ToJson()</pre>
</details>
</div>
@code {
- [Parameter]
- public StateEvent Event { get; set; }
-}
\ No newline at end of file
+}
|