diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2025-09-12 13:07:20 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2025-09-12 13:07:20 +0200 |
commit | a20d44d64f02f86d23cba1f1a886352c5f744a1a (patch) | |
tree | 98ab2ddf1c27ffe5e56af763750c19b45867cbab /src/Controllers/SyncController.php | |
parent | b1b101fd98c8b4354a4e0c73e867d817466de30e (diff) |
Diffstat (limited to 'src/Controllers/SyncController.php')
-rwxr-xr-x | src/Controllers/SyncController.php | 71 |
1 files changed, 57 insertions, 14 deletions
diff --git a/src/Controllers/SyncController.php b/src/Controllers/SyncController.php index 76b6a26..b7d51c3 100755 --- a/src/Controllers/SyncController.php +++ b/src/Controllers/SyncController.php @@ -5,6 +5,7 @@ namespace App\Controllers; use App\Database; use App\Errors\UnauthorizedError; use App\Events\PresenceEvent; +use App\Models\User; use App\Types\PresenceState; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -21,13 +22,7 @@ class SyncController public function sync(Request $request): Response { $accessToken = str_replace("Bearer ", "", $request->headers->get("authorization") ?: ""); - $user = Database::getInstance()->query(<<<SQL - select users.* from users left join tokens on tokens.user_id = users.id where tokens.access_token=:access_token - SQL, [ - "access_token" => $accessToken, - ])->fetch(); - - # TODO: token validation + $user = User::fetchWithAccessToken($accessToken); if (empty($user)) { throw new UnauthorizedError(); @@ -39,6 +34,49 @@ class SyncController $since = $request->query->get("since", ""); $timeout = $request->query->get("timeout", 0); + $rooms = Database::getInstance()->query(<<<SQL + select * from rooms + SQL)->fetchAll(); + + $joinedRooms = new \stdClass(); + if (! empty($rooms)) { + $joinedRooms = []; + foreach ($rooms as $room) { + $joinedRooms[$room["id"]] = [ + "account_data" => [ + "events" => [], + ], + + "ephemeral" => [ + "events" => [], + ], + + "state" => [ + "events" => [], + ], + + "summary" => [ + "m.heroes" => [], + "m.invited_member_count" => 0, + "m.joined_member_count" => 1, + ], + + "timeline" => [ + "events" => [], + "limited" => false, + "prev_batch" => "", + ], + + "unread_notifications" => [ + "highlight_count" => 1, + "notification_count" => 2, + ], + + "unread_thread_notifications" => new \stdClass(), + ]; + } + } + return new JsonResponse([ "account_data" => [ "events" => [ @@ -46,23 +84,28 @@ class SyncController ], ], - "device_lists" => [], + "device_lists" => [ + "changed" => [], + "left" => [], + ], - "device_one_time_keys_count" => 10, + "device_one_time_keys_count" => [ + "signed_curve25519" => 10, + ], "next_batch" => "next_batch_id", "presence" => [ "events" => [ - (new PresenceEvent(sender: $user["id"]))->toJsonEncodeable(), + (new PresenceEvent(sender: $user->getId()))->toJsonEncodeable(), ], ], "rooms" => [ - "invite" => [], - "join" => [], - "knock" => [], - "leave" => [], + "invite" => new \stdClass(), + "join" => $joinedRooms, + "knock" => new \stdClass(), + "leave" => new \stdClass(), ], "to_device" => [ |