Skip to content

Commit 14cbf61

Browse files
chore: reimplement backend
1 parent 35e5c46 commit 14cbf61

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

extend.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,13 @@
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
];

src/.gitkeep

Whitespace-only changes.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
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+
}

0 commit comments

Comments
 (0)