wip: downloads entire season

This commit is contained in:
2025-07-08 16:17:21 -05:00
parent 8c0ec98c20
commit 13b9047841
16 changed files with 409 additions and 24 deletions

View File

@@ -6,10 +6,10 @@ class UserPreferences
{
public function __construct(
public readonly string $resolution,
public readonly string $codec,
public readonly string $language,
public readonly string $provider,
public readonly string $quality,
public readonly ?string $resolution,
public readonly ?string $codec,
public readonly ?string $language,
public readonly ?string $provider,
public readonly ?string $quality,
) {}
}

View File

@@ -2,18 +2,46 @@
namespace App\User\Dto;
use App\User\Framework\Entity\PreferenceOption;
use App\User\Framework\Entity\User;
use Symfony\Component\Security\Core\User\UserInterface;
class UserPreferencesFactory
{
public static function createFromUser(User $user): UserPreferences
/** @param User $user */
public static function createFromUser(UserInterface $user): UserPreferences
{
return new UserPreferences(
resolution: $user->getUserPreference('resolution')->getPreferenceValue(),
codec: $user->getUserPreference('codec')->getPreferenceValue(),
language: $user->getUserPreference('language')->getPreferenceValue(),
provider: $user->getUserPreference('provider')->getPreferenceValue(),
quality: $user->getUserPreference('quality')->getPreferenceValue(),
resolution: self::getNestedValue($user, 'resolution'),
codec: self::getNestedValue($user, 'codec'),
language: self::getValue($user, 'language'),
provider: self::getValue($user, 'provider'),
quality: self::getValue($user, 'quality'),
);
}
/** @param User $user */
private static function getValue(UserInterface $user, string $preferenceId)
{
$value = $user->getUserPreference($preferenceId)->getPreferenceValue();
if ($value === "") {
return null;
}
return $value;
}
/** @param User $user */
private static function getNestedValue(UserInterface $user, string $preferenceId): ?string
{
$preference = $user->getUserPreference($preferenceId);
if (null === $preference) {
return null;
}
return $preference->getPreference()
->getPreferenceOptions()
->filter(fn (PreferenceOption $option) => (string) $option->getId() === $preference->getPreferenceValue())
->first()
->getValue()
;
}
}

View File

@@ -156,7 +156,9 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
public function getUserPreference(string $preferenceName): ?UserPreference
{
foreach ($this->userPreferences as $userPreference) {
if ($userPreference->getPreference()->getName() === $preferenceName) {
if ($userPreference->getPreference()->getName() === $preferenceName
|| $userPreference->getPreference()->getId() === $preferenceName
) {
return $userPreference;
}
}