diff --git a/app/Livewire/Ui/Nx/Mail/QuarantineList.php b/app/Livewire/Ui/Nx/Mail/QuarantineList.php index 7ce82f9..f387297 100644 --- a/app/Livewire/Ui/Nx/Mail/QuarantineList.php +++ b/app/Livewire/Ui/Nx/Mail/QuarantineList.php @@ -2,33 +2,34 @@ namespace App\Livewire\Ui\Nx\Mail; +use Illuminate\Pagination\LengthAwarePaginator; use Livewire\Attributes\Layout; use Livewire\Attributes\On; use Livewire\Attributes\Title; use Livewire\Attributes\Url; use Livewire\Component; +use Livewire\WithPagination; #[Layout('layouts.dvx')] #[Title('Quarantäne · Mailwolt')] class QuarantineList extends Component { + use WithPagination; + #[Url(as: 'filter', keep: true)] public string $filter = 'suspicious'; #[Url(as: 'q', keep: true)] public string $search = ''; - #[Url(as: 'page', keep: true)] - public int $page = 1; - public int $perPage = 25; public int $rows = 500; #[On('quarantine:updated')] public function refresh(): void {} - public function updatedFilter(): void { $this->page = 1; } - public function updatedSearch(): void { $this->page = 1; } + public function updatedFilter(): void { $this->resetPage(); } + public function updatedSearch(): void { $this->resetPage(); } public function openMessage(string $msgId): void { @@ -67,16 +68,19 @@ class QuarantineList extends Component )); } - $total = count($messages); - $totalPages = max(1, (int) ceil($total / $this->perPage)); - $this->page = max(1, min($this->page, $totalPages)); - $paged = array_slice($messages, ($this->page - 1) * $this->perPage, $this->perPage); + $total = count($messages); + $currentPage = LengthAwarePaginator::resolveCurrentPage(); + $paged = new LengthAwarePaginator( + array_slice($messages, ($currentPage - 1) * $this->perPage, $this->perPage), + $total, + $this->perPage, + $currentPage, + ['path' => request()->url()] + ); return view('livewire.ui.nx.mail.quarantine-list', [ - 'messages' => $paged, - 'counts' => $counts, - 'total' => $total, - 'totalPages' => $totalPages, + 'messages' => $paged, + 'counts' => $counts, ]); } diff --git a/app/Livewire/Ui/Nx/Mail/QueueList.php b/app/Livewire/Ui/Nx/Mail/QueueList.php index f2281bd..78d4daf 100644 --- a/app/Livewire/Ui/Nx/Mail/QueueList.php +++ b/app/Livewire/Ui/Nx/Mail/QueueList.php @@ -2,25 +2,26 @@ namespace App\Livewire\Ui\Nx\Mail; +use Illuminate\Pagination\LengthAwarePaginator; use Livewire\Attributes\Layout; use Livewire\Attributes\On; use Livewire\Attributes\Title; use Livewire\Attributes\Url; use Livewire\Component; +use Livewire\WithPagination; #[Layout('layouts.dvx')] #[Title('Mail-Queue · Mailwolt')] class QueueList extends Component { + use WithPagination; + #[Url(as: 'filter', keep: true)] public string $filter = 'all'; #[Url(as: 'q', keep: true)] public string $search = ''; - #[Url(as: 'page', keep: true)] - public int $page = 1; - public int $perPage = 25; public array $selected = []; public bool $selectAll = false; @@ -28,8 +29,8 @@ class QueueList extends Component #[On('queue:updated')] public function refresh(): void {} - public function updatedFilter(): void { $this->page = 1; $this->selected = []; $this->selectAll = false; } - public function updatedSearch(): void { $this->page = 1; } + public function updatedFilter(): void { $this->resetPage(); $this->selected = []; $this->selectAll = false; } + public function updatedSearch(): void { $this->resetPage(); } public function updatedSelectAll(bool $val): void { @@ -96,16 +97,19 @@ class QueueList extends Component )); } - $total = count($messages); - $totalPages = max(1, (int) ceil($total / $this->perPage)); - $this->page = max(1, min($this->page, $totalPages)); - $paged = array_slice($messages, ($this->page - 1) * $this->perPage, $this->perPage); + $total = count($messages); + $currentPage = LengthAwarePaginator::resolveCurrentPage(); + $paged = new LengthAwarePaginator( + array_slice($messages, ($currentPage - 1) * $this->perPage, $this->perPage), + $total, + $this->perPage, + $currentPage, + ['path' => request()->url()] + ); return view('livewire.ui.nx.mail.queue-list', [ - 'messages' => $paged, - 'counts' => $counts, - 'total' => $total, - 'totalPages' => $totalPages, + 'messages' => $paged, + 'counts' => $counts, ]); } diff --git a/resources/views/livewire/ui/nx/mail/quarantine-list.blade.php b/resources/views/livewire/ui/nx/mail/quarantine-list.blade.php index 52df16c..7f3c8c9 100644 --- a/resources/views/livewire/ui/nx/mail/quarantine-list.blade.php +++ b/resources/views/livewire/ui/nx/mail/quarantine-list.blade.php @@ -8,7 +8,7 @@ Quarantäne {{ $counts['all'] }} - Rspamd · {{ $total }} Einträge + Rspamd · {{ $messages->total() }} Einträge