This commit is contained in:
2026-04-18 14:18:52 +02:00
parent 5b4d3d435e
commit f3e5100d5d
126 changed files with 743 additions and 795 deletions

View File

@@ -3,10 +3,10 @@
namespace App\Livewire;
use App\Models\Episode;
use Illuminate\Support\Facades\Auth;
use Livewire\Attributes\Url;
use Livewire\Component;
use Livewire\WithPagination;
use Livewire\Attributes\Url;
use Illuminate\Support\Facades\Auth;
class LiveSearch extends Component
{
@@ -20,14 +20,17 @@ class LiveSearch extends Component
#[Url(history: true)]
public $tags = [];
public $tagsCopy = [];
#[Url(history: true)]
public $studios = [];
public $studiosCopy = [];
#[Url(history: true)]
public $blacklist = [];
public $blacklistCopy = [];
#[Url(history: true)]
@@ -72,7 +75,7 @@ class LiveSearch extends Component
public function mount()
{
// User blacklist
if (Auth::check() && empty($this->blacklist) && !empty(auth()->user()->tag_blacklist)) {
if (Auth::check() && empty($this->blacklist) && ! empty(auth()->user()->tag_blacklist)) {
$this->blacklist = auth()->user()->tag_blacklist;
}
@@ -118,11 +121,15 @@ class LiveSearch extends Component
}
$user_id = Auth::check() ? auth()->user()->id : 0;
$episodes = Episode::with('gallery')->when($this->search != '', fn ($query) => $query->where(function($query) { $query->where('title', 'like', '%'.$this->search.'%')->orWhere('title_search', 'like', '%'.$this->search.'%')->orWhere('title_jpn', 'like', '%'.$this->search.'%'); }))
->when($this->tags !== [], fn ($query) => $query->withAllTags($this->tags))
->when($this->blacklist !== [], fn ($query) => $query->withoutTags($this->blacklist))
->when($this->studios !== [], fn ($query) => $query->whereHas('studio', function ($query) { $query->whereIn('slug', $this->studios); }))
->when($this->hideWatched !== [] && Auth::check(), fn ($query) => $query->whereDoesntHave('watched', function ($query) use ($user_id) {
$episodes = Episode::with('gallery')->when($this->search != '', fn ($query) => $query->where(function ($query) {
$query->where('title', 'like', '%'.$this->search.'%')->orWhere('title_search', 'like', '%'.$this->search.'%')->orWhere('title_jpn', 'like', '%'.$this->search.'%');
}))
->when($this->tags !== [], fn ($query) => $query->withAllTags($this->tags))
->when($this->blacklist !== [], fn ($query) => $query->withoutTags($this->blacklist))
->when($this->studios !== [], fn ($query) => $query->whereHas('studio', function ($query) {
$query->whereIn('slug', $this->studios);
}))
->when($this->hideWatched !== [] && Auth::check(), fn ($query) => $query->whereDoesntHave('watched', function ($query) use ($user_id) {
$query->where('user_id', $user_id);
}))
->when(Auth::guest(), fn ($query) => $query->withoutTags(['loli', 'shota']))
@@ -140,16 +147,16 @@ class LiveSearch extends Component
$this->dispatch('contentChanged');
return view('livewire.live-search', [
'episodes' => $episodes,
'tagcount' => is_array($this->tags) ? count($this->tags) : 0,
'studiocount' => is_array($this->studios) ? count($this->studios) : 0,
'blacklistcount' => is_array($this->blacklist) ? count($this->blacklist) : 0,
'query' => $this->search,
'selectedtags' => $this->tags,
'selectedstudios' => $this->studios,
'episodes' => $episodes,
'tagcount' => is_array($this->tags) ? count($this->tags) : 0,
'studiocount' => is_array($this->studios) ? count($this->studios) : 0,
'blacklistcount' => is_array($this->blacklist) ? count($this->blacklist) : 0,
'query' => $this->search,
'selectedtags' => $this->tags,
'selectedstudios' => $this->studios,
'selectedblacklist' => $this->blacklist,
'searchIsJpn' => $searchIsJpn,
'view' => $this->view,
'searchIsJpn' => $searchIsJpn,
'view' => $this->view,
]);
}
}