summaryrefslogtreecommitdiff
path: root/matrix-specification/Events/Room/MemberEvent.php
diff options
context:
space:
mode:
Diffstat (limited to 'matrix-specification/Events/Room/MemberEvent.php')
-rw-r--r--matrix-specification/Events/Room/MemberEvent.php47
1 files changed, 47 insertions, 0 deletions
diff --git a/matrix-specification/Events/Room/MemberEvent.php b/matrix-specification/Events/Room/MemberEvent.php
new file mode 100644
index 0000000..0f27289
--- /dev/null
+++ b/matrix-specification/Events/Room/MemberEvent.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace Matrix\Events\Room;
+
+use Matrix\Data\UnsignedData;
+use Matrix\Enums\EventType;
+use Matrix\Enums\MembershipState;
+use Matrix\Events\StateEvent;
+
+class MemberEvent extends StateEvent
+{
+ public function __construct(
+ string $eventId,
+ int $originServerTimestamp,
+ string $roomId,
+ string $sender,
+ string $stateKey,
+ bool $isDirect,
+ MembershipState $membership,
+ ?string $avatarUrl = null,
+ ?string $displayName = null,
+ ?string $joinAuthorisedViaUsersServer = null,
+ ?string $reason = null,
+ ?object $thirdPartyInvite = null, # TODO: https://spec.matrix.org/v1.17/client-server-api/#mroommember_thirdpartyinvite
+ ?UnsignedData $unsigned = null,
+ )
+ {
+ parent::__construct(
+ array_filter([
+ "avatar_url" => $avatarUrl,
+ "displayname" => $displayName,
+ "is_direct" => $isDirect,
+ "join_authorised_via_users_server" => $joinAuthorisedViaUsersServer,
+ "membership" => $membership,
+ "reason" => $reason,
+ "third_party_invite" => $thirdPartyInvite,
+ ], fn ($value) => ! is_null($value)),
+ $eventId,
+ $originServerTimestamp,
+ $roomId,
+ $sender,
+ $stateKey,
+ EventType::ROOM_MEMBER,
+ $unsigned,
+ );
+ }
+}