summaryrefslogtreecommitdiff
path: root/src/Events
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2025-09-11 13:19:21 +0200
committerDaniel Weipert <git@mail.dweipert.de>2025-09-11 13:19:21 +0200
commitb1b101fd98c8b4354a4e0c73e867d817466de30e (patch)
tree763e6d3dab13a2af8c324f7f879c5874dced76f2 /src/Events
parentdb014ebf9f8f84a1a0d0972298e70bf29e57c37e (diff)
sync, rooms, events, etc
Diffstat (limited to 'src/Events')
-rw-r--r--src/Events/Event.php16
-rw-r--r--src/Events/PresenceEvent.php40
-rw-r--r--src/Events/RoomMemberEvent.php33
-rw-r--r--src/Events/RoomNameEvent.php33
4 files changed, 122 insertions, 0 deletions
diff --git a/src/Events/Event.php b/src/Events/Event.php
new file mode 100644
index 0000000..cab1b14
--- /dev/null
+++ b/src/Events/Event.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Events;
+
+use App\Types\EventType;
+
+abstract class Event
+{
+ public function __construct(
+ protected EventType $type,
+ )
+ {}
+
+ abstract public function fromJson(string $json): static;
+ abstract public function toJsonEncodeable(): array;
+}
diff --git a/src/Events/PresenceEvent.php b/src/Events/PresenceEvent.php
new file mode 100644
index 0000000..e3a54b3
--- /dev/null
+++ b/src/Events/PresenceEvent.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Events;
+
+use App\Types\EventType;
+use App\Types\PresenceState;
+
+class PresenceEvent extends Event
+{
+ public function __construct(
+ private string $sender,
+ private string $avatarUrl = "mxc://localhost/wefuiwegh8742w",
+ private int $lastActiveAgo = 1234,
+ private bool $currentlyActive = false,
+ private PresenceState $presence = PresenceState::ONLINE,
+ private string $statusMessage = "",
+ )
+ {
+ parent::__construct(EventType::PRESENCE);
+ }
+
+ public function fromJson(string $json): static
+ {
+ }
+
+ public function toJsonEncodeable(): array
+ {
+ return [
+ "type" => $this->type,
+ "sender" => $this->sender,
+ "content" => [
+ "avatar_url" => $this->avatarUrl,
+ "currently_active" => $this->currentlyActive,
+ "last_active_ago" => $this->lastActiveAgo,
+ "presence" => $this->presence,
+ "status_msg" => $this->statusMessage,
+ ],
+ ];
+ }
+}
diff --git a/src/Events/RoomMemberEvent.php b/src/Events/RoomMemberEvent.php
new file mode 100644
index 0000000..02793ea
--- /dev/null
+++ b/src/Events/RoomMemberEvent.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace App\Events;
+
+use App\Types\EventType;
+
+class RoomMemberEvent extends Event
+{
+ public function __construct(
+ private string $sender,
+ private string $stateKey,
+ private string $membership,
+ )
+ {
+ parent::__construct(EventType::ROOM_MEMBER);
+ }
+
+ public function fromJson(string $json): static
+ {
+ }
+
+ public function toJsonEncodeable(): array
+ {
+ return [
+ "type" => $this->type,
+ "sender" => $this->sender,
+ "state_key" => $this->stateKey,
+ "content" => [
+ "membership" => $this->membership,
+ ],
+ ];
+ }
+}
diff --git a/src/Events/RoomNameEvent.php b/src/Events/RoomNameEvent.php
new file mode 100644
index 0000000..59abbe2
--- /dev/null
+++ b/src/Events/RoomNameEvent.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace App\Events;
+
+use App\Types\EventType;
+
+class RoomNameEvent extends Event
+{
+ public function __construct(
+ private string $sender,
+ private string $stateKey,
+ private string $name,
+ )
+ {
+ parent::__construct(EventType::ROOM_NAME);
+ }
+
+ public function fromJson(string $json): static
+ {
+ }
+
+ public function toJsonEncodeable(): array
+ {
+ return [
+ "type" => $this->type,
+ "sender" => $this->sender,
+ "state_key" => $this->stateKey,
+ "content" => [
+ "name" => $this->name,
+ ],
+ ];
+ }
+}