summaryrefslogtreecommitdiff
path: root/src/Controllers/SyncController.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Controllers/SyncController.php')
-rwxr-xr-xsrc/Controllers/SyncController.php71
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" => [