From 75b3778dccccddb5cc90b2b4e0a3f958826ad8ba Mon Sep 17 00:00:00 2001 From: winter Date: Wed, 15 Jan 2025 20:33:38 +0000 Subject: implement home timeline --- routes/timelines.php | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 routes/timelines.php (limited to 'routes/timelines.php') diff --git a/routes/timelines.php b/routes/timelines.php new file mode 100644 index 0000000..f70c0d6 --- /dev/null +++ b/routes/timelines.php @@ -0,0 +1,48 @@ +mount('/feed/global', function (array $args) { + $items = (new GlobalTimeline())->getPage(); + render_template('timeline', ['kind' => 'global', 'items' => $items]); +}); + +Router::getInstance()->mount('/feed/local', function (array $args) { + $items = (new LocalTimeline())->getPage(); + render_template('timeline', ['kind' => 'local', 'items' => $items]); +}); + +Router::getInstance()->mount('/feed/home', function (array $args) { + $user = UserAccount::findByCurrentSession(); + if ($user == null) { + throw new TemporaryRedirect('/feed/global'); + } + $items = (new HomeTimeline($user))->getPage(); + render_template('timeline', ['kind' => 'home', 'items' => $items]); +}); + +Router::getInstance()->mount('/feed/home/partial', function (array $args) { + $user = UserAccount::requireByCurrentSession(); + if (!isset($_GET['since'])) { + throw new BadRequest('get parameter `since` required'); + } + $when = new \DateTimeImmutable($_GET['since']); + $items = (new HomeTimeline($user))->getItemsSince($when); + + foreach ($items as $item) { + $item->getReason()?->renderAsHtml(); + $item->getObject()->renderAsHtml(); + } + + render_template('live_timeline_updater', [ + 'kind' => 'home', + 'isUpdate' => true, + 'since' => new \DateTimeImmutable() + ]); +}); \ No newline at end of file -- cgit v1.3