File tree Expand file tree Collapse file tree 3 files changed +49
-0
lines changed
Expand file tree Collapse file tree 3 files changed +49
-0
lines changed Original file line number Diff line number Diff line change 1818 ->js (__DIR__ .'/js/dist/forum.js ' ),
1919
2020 new Extend \Locales (__DIR__ .'/resources/locale ' ),
21+
22+ (new Extend \Middleware ('forum ' ))
23+ ->add (Middleware \ApplyUserSortingMiddleware::class),
24+
25+ (new Extend \Middleware ('api ' ))
26+ ->add (Middleware \ApplyUserSortingMiddleware::class),
27+
28+ (new Extend \User )
29+ ->registerPreference ('discussion_sort ' ),
2130];
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace GlowingBlue \SaveSortingPreferences \Middleware ;
4+
5+ use Flarum \Http \RequestUtil ;
6+ use Flarum \User \Guest ;
7+ use Illuminate \Support \Arr ;
8+ use Psr \Http \Message \ResponseInterface ;
9+ use Psr \Http \Message \ServerRequestInterface ;
10+ use Psr \Http \Server \MiddlewareInterface ;
11+ use Psr \Http \Server \RequestHandlerInterface ;
12+
13+ class ApplyUserSortingMiddleware implements MiddlewareInterface
14+ {
15+ public function process (ServerRequestInterface $ request , RequestHandlerInterface $ handler ): ResponseInterface
16+ {
17+ $ actor = RequestUtil::getActor ($ request );
18+
19+ if ($ request ->getUri ()->getPath () !== '/ ' ) {
20+ return $ handler ->handle ($ request );
21+ }
22+
23+ if ($ actor instanceof Guest) {
24+ return $ handler ->handle ($ request );
25+ }
26+
27+ $ params = $ request ->getQueryParams ();
28+
29+ $ sort = Arr::get ($ params , 'sort ' );
30+ $ lastSelectedSort = $ actor ->getPreference ('discussion_sort ' );
31+
32+ $ request = $ request ->withQueryParams (
33+ array_merge ($ params , [
34+ "sort " => $ sort ?? $ lastSelectedSort ,
35+ ])
36+ );
37+
38+ return $ handler ->handle ($ request );
39+ }
40+ }
You can’t perform that action at this time.
0 commit comments