From cbb70a5054f683c1293ef8a9b207a24cfd72998d Mon Sep 17 00:00:00 2001 From: Hugo Sales Date: Wed, 29 Dec 2021 13:26:11 +0000 Subject: [PATCH] [COMPONENT][Feed] Refactor Feed component --- {src => components/Feed}/Controller/Feeds.php | 11 ++++++----- components/Feed/Feed.php | 9 +++++++++ src/Entity/Feed.php | 2 +- src/Routes/Main.php | 2 -- 4 files changed, 16 insertions(+), 8 deletions(-) rename {src => components/Feed}/Controller/Feeds.php (91%) diff --git a/src/Controller/Feeds.php b/components/Feed/Controller/Feeds.php similarity index 91% rename from src/Controller/Feeds.php rename to components/Feed/Controller/Feeds.php index 938aa58de7..5dd84e545d 100644 --- a/src/Controller/Feeds.php +++ b/components/Feed/Controller/Feeds.php @@ -33,7 +33,7 @@ declare(strict_types = 1); * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ -namespace App\Controller; +namespace Component\Feed\Controller; use function App\Core\I18n\_m; use App\Util\Common; @@ -65,12 +65,13 @@ class Feeds extends FeedController */ public function home(Request $request): array { - Common::ensureLoggedIn(); - $data = Feed::query( + $user = Common::ensureLoggedIn(); + $actor = $user->getActor(); + $data = Feed::query( query: 'note-from:subscribed-person,subscribed-group,subscribed-organization,subscribed-business', page: $this->int('p'), - language: Common::actor()?->getTopLanguage()?->getLocale(), - actor: Common::actor(), + language: $actor?->getTopLanguage()?->getLocale(), + actor: $actor, ); return [ '_template' => 'feed/feed.html.twig', diff --git a/components/Feed/Feed.php b/components/Feed/Feed.php index d71dd0d8ba..e7d184aa1d 100644 --- a/components/Feed/Feed.php +++ b/components/Feed/Feed.php @@ -26,9 +26,11 @@ namespace Component\Feed; use App\Core\DB\DB; use App\Core\Event; use App\Core\Modules\Component; +use App\Core\Router\RouteLoader; use App\Entity\Actor; use App\Entity\Subscription; use App\Util\Formatting; +use Component\Feed\Controller as C; use Component\Search\Util\Parser; use Doctrine\Common\Collections\ExpressionBuilder; use Doctrine\ORM\Query\Expr; @@ -36,6 +38,13 @@ use Doctrine\ORM\QueryBuilder; class Feed extends Component { + public function onAddRoute(RouteLoader $r): bool + { + $r->connect('feed_public', '/feed/public', [C\Feeds::class, 'public']); + $r->connect('feed_home', '/feed/home', [C\Feeds::class, 'home']); + return Event::next; + } + /** * Perform a high level query on notes or actors * diff --git a/src/Entity/Feed.php b/src/Entity/Feed.php index 87491b6539..b2927a1c2d 100644 --- a/src/Entity/Feed.php +++ b/src/Entity/Feed.php @@ -152,7 +152,7 @@ class Feed extends Entity public static function createDefaultFeeds(int $actor_id, LocalUser $user): void { $ordering = 1; - DB::persist(self::create(['actor_id' => $actor_id, 'url' => Router::url($route = 'feed_home', ['nickname' => $user->getNickname()]), 'route' => $route, 'title' => _m('Home'), 'ordering' => $ordering++])); + DB::persist(self::create(['actor_id' => $actor_id, 'url' => Router::url($route = 'feed_home'), 'route' => $route, 'title' => _m('Home'), 'ordering' => $ordering++])); DB::persist(self::create(['actor_id' => $actor_id, 'url' => Router::url($route = 'feed_public'), 'route' => $route, 'title' => _m('Planet'), 'ordering' => $ordering++])); Event::handle('CreateDefaultFeeds', [$actor_id, $user, &$ordering]); } diff --git a/src/Routes/Main.php b/src/Routes/Main.php index c534e9d7c5..b767b05de7 100644 --- a/src/Routes/Main.php +++ b/src/Routes/Main.php @@ -54,8 +54,6 @@ abstract class Main $r->connect('security_recover_password_token', '/main/recover-password/{token?}', [C\ResetPassword::class, 'reset']); $r->connect('root', '/', RedirectController::class, ['defaults' => ['route' => 'feed_public']]); - $r->connect('feed_public', '/feed/public', [C\Feeds::class, 'public']); - $r->connect('feed_home', '/feed/home', [C\Feeds::class, 'home']); $r->connect('panel', '/panel', [C\AdminPanel::class, 'site']); $r->connect('panel_site', '/panel/site', [C\AdminPanel::class, 'site']);