diff options
Diffstat (limited to 'matrix-specification/Events/Room/MemberEvent.php')
| -rw-r--r-- | matrix-specification/Events/Room/MemberEvent.php | 47 |
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, + ); + } +} |
