Skip to content

Commit c84a93d

Browse files
committed
feat:(LAR-165) add filter to thread
feat:(LAR-165) add filter to thread feat:(LAR-180) update paginate article feat:(LAR-165) add filter for popular topics fix:(LAR-165) fix phpstan error feat:(LAR-149) add no reply filter feat:(LAR-165) add filter to thread feat:(LAR-165) add filter to thread en fix lint feat:(LAR-165) add filter to thread
1 parent b46c1c1 commit c84a93d

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed

app/Livewire/Pages/Articles/Index.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ public function render(): View
3333
->published()
3434
->notPinned()
3535
->forLocale($this->locale)
36-
->simplePaginate(20),
36+
->simplePaginate(21),
37+
3738
'tags' => Tag::query()->whereHas('articles', function ($query): void {
3839
$query->published();
3940
})->orderBy('name')->get(),

app/Livewire/Pages/Forum/Index.php

+28-2
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ final class Index extends Component
3939
#[Url(as: 'follow')]
4040
public ?string $subscribe = null;
4141

42+
#[Url]
43+
public ?string $popular = null;
44+
4245
public ?Channel $currentChannel = null;
4346

4447
public string $search = '';
@@ -54,6 +57,18 @@ public function mount(): void
5457
$this->locale = config('app.locale');
5558
}
5659

60+
protected function applyPopular(Builder $query): Builder
61+
{
62+
if ($this->popular) {
63+
return $query // @phpstan-ignore-line
64+
->withCount('replies')
65+
->orderByDesc('replies_count')
66+
->OrderByViews();
67+
}
68+
69+
return $query;
70+
}
71+
5772
#[On('channelUpdated')]
5873
public function reloadThreads(?int $channelId): void
5974
{
@@ -140,13 +155,23 @@ protected function applySubscribe(Builder $query): Builder
140155

141156
protected function applyUnAnswer(Builder $query): Builder
142157
{
158+
if ($this->unAnswered) {
159+
return $query->whereDoesntHave('replies');
160+
}
161+
143162
return $query;
144163
}
145164

165+
protected function applySorting(Builder $query): Builder
166+
{
167+
return $this->popular
168+
? $this->applyPopular($query)
169+
: $query->orderByDesc('created_at');
170+
}
171+
146172
public function render(): View
147173
{
148-
$query = Thread::with(['channels', 'user'])
149-
->orderByDesc('created_at');
174+
$query = Thread::with(['channels', 'user']);
150175

151176
$query = $this->applyChannel($query);
152177
$query = $this->applySearch($query);
@@ -155,6 +180,7 @@ public function render(): View
155180
$query = $this->applyAuthor($query);
156181
$query = $this->applySubscribe($query);
157182
$query = $this->applyUnAnswer($query);
183+
$query = $this->applySorting($query);
158184

159185
$threads = $query
160186
->scopes('withViewsCount')

resources/views/layouts/forum.blade.php

-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
:href="route('forum.index', ['popular' => true])"
4343
:active="request()->getUri() === route('forum.index', ['popular' => true])"
4444
icon="untitledui-heart"
45-
class="hidden"
4645
>
4746
{{ __('pages/forum.navigation.popular') }}
4847
</x-nav.forum-link>
@@ -64,7 +63,6 @@ class="hidden"
6463
:href="route('forum.index', ['no-replies' => true])"
6564
:active="request()->getUri() === route('forum.index', ['no-replies' => true])"
6665
icon="untitledui-message-x-square"
67-
class="hidden"
6866
>
6967
{{ __('pages/forum.navigation.no_reply') }}
7068
</x-nav.forum-link>

resources/views/livewire/pages/articles/index.blade.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class="flex size-8 items-center justify-center rounded-full text-gray-400 transi
119119
@endforeach
120120
</div>
121121

122-
<div class="mt-4">
122+
<div class="mt-10">
123123
{{ $articles->links() }}
124124
</div>
125125
</x-container>

0 commit comments

Comments
 (0)