fix: prefills provider preference on filter

This commit is contained in:
2025-04-30 22:23:42 -05:00
parent bfd5f53d67
commit b23d8a2ba3
5 changed files with 59 additions and 11 deletions

View File

@@ -73,7 +73,7 @@ export default class extends Controller {
.map((language) => { .map((language) => {
const preferred = this.languageTarget.dataset.preferred; const preferred = this.languageTarget.dataset.preferred;
if (preferred === language) { if (preferred === language) {
return '<option value="'+preferred+'" selected>'+preferred+'</option>'; return;
} }
return '<option value="'+language+'">'+language+'</option>'; return '<option value="'+language+'">'+language+'</option>';
}) })
@@ -85,9 +85,22 @@ export default class extends Controller {
this.providers.push(props['provider']); this.providers.push(props['provider']);
} }
const preferred = this.providerTarget.dataset.preferred;
if (preferred) {
this.providerTarget.innerHTML = '<option value="'+preferred+'" selected>'+preferred+'</option>';
this.providerTarget.innerHTML += '<option value="">n/a</option>';
} else {
this.providerTarget.innerHTML = '<option value="">n/a</option>'; this.providerTarget.innerHTML = '<option value="">n/a</option>';
}
this.providerTarget.innerHTML += this.providers.sort() this.providerTarget.innerHTML += this.providers.sort()
.map((provider) => '<option value="'+provider+'">'+provider+'</option>') .map((provider) => {
const preferred = this.languageTarget.dataset.preferred;
if (preferred === provider) {
return;
}
return '<option value="' + provider + '">' + provider + '</option>'
})
.join(); .join();
} }

View File

@@ -12,6 +12,7 @@ use App\User\Framework\Entity\UserPreference;
use App\User\Framework\Repository\PreferencesRepository; use App\User\Framework\Repository\PreferencesRepository;
use App\Util\CountryCodes; use App\Util\CountryCodes;
use App\Util\CountryLanguages; use App\Util\CountryLanguages;
use App\Util\ProviderList;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Bundle\SecurityBundle\Security; use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
@@ -45,7 +46,7 @@ class PreferencesController extends AbstractController
[ [
'preferences' => $this->preferencesRepository->findEnabled(), 'preferences' => $this->preferencesRepository->findEnabled(),
'languages' => $languages, 'languages' => $languages,
'providers' => ['test' => 'Test'], 'providers' => ProviderList::$providers,
'userPreferences' => $userPreferences->toArray(), 'userPreferences' => $userPreferences->toArray(),
] ]
); );
@@ -67,7 +68,7 @@ class PreferencesController extends AbstractController
[ [
'preferences' => $this->preferencesRepository->findEnabled(), 'preferences' => $this->preferencesRepository->findEnabled(),
'languages' => $languages, 'languages' => $languages,
'providers' => ['test' => 'Test'], 'providers' => ProviderList::$providers,
'userPreferences' => $userPreferences->toArray(), 'userPreferences' => $userPreferences->toArray(),
] ]
); );

26
src/Util/ProviderList.php Normal file
View File

@@ -0,0 +1,26 @@
<?php
namespace App\Util;
class ProviderList
{
public static $providers = [
'1337x',
'Comando',
'EZTV',
'ilCorSaRoNeRo',
'MagnetDL',
'MejorTorrent',
'RARBG',
'Rutor',
'Rutracker',
'ThePirateBay',
'Torrent9',
'TorrentGalaxy',
];
public static function getProviders()
{
return self::$providers;
}
}

View File

@@ -45,8 +45,13 @@
</label> </label>
<label for="provider"> <label for="provider">
Provider Provider
<select id="provider" data-result-filter-target="provider" class="px-1 py-0.5 bg-stone-100 text-gray-800 rounded-md"> <select id="provider"
<option selected value="">n/a</option> data-result-filter-target="provider"
class="px-1 py-0.5 bg-stone-100 text-gray-800 rounded-md"
{% if this.userPreferences['provider'] != null %}
data-preferred="{{ this.userPreferences['provider'] }}"
{% endif %}
>
</select> </select>
</label> </label>
{% if results.media.mediaType == "tvshows" %} {% if results.media.mediaType == "tvshows" %}

View File

@@ -30,11 +30,14 @@
<label class="text-gray-50" for="provider">Provider</label> <label class="text-gray-50" for="provider">Provider</label>
<select class="p-1.5 rounded-md mb-2" name="provider" id="provider" value="{{ userPreferences['provider'].getPreferenceValue() }}"> <select class="p-1.5 rounded-md mb-2" name="provider" id="provider" value="{{ userPreferences['provider'].getPreferenceValue() }}">
{% for key, value in providers %} <option class="text-gray-800" value=""
{{ "" == userPreferences['provider'].getPreferenceValue() ? "selected" }}
>n/a</option>
{% for provider in providers %}
<option class="text-gray-800" <option class="text-gray-800"
value="{{ key }}" value="{{ provider }}"
{{ key == userPreferences['provider'].getPreferenceValue() ? "selected" }} {{ provider == userPreferences['provider'].getPreferenceValue() ? "selected" }}
>{{ value }}</option> >{{ provider }}</option>
{% endfor %} {% endfor %}
</select> </select>