fix: refactors getting user's media preferences
This commit is contained in:
@@ -31,16 +31,7 @@ class PreferencesController extends AbstractController
|
||||
#[Route('/user/preferences', 'app_user_preferences', methods: ['GET'])]
|
||||
public function mediaPreferences(): Response
|
||||
{
|
||||
$enabledPreferences = $this->preferencesRepository->findEnabled();
|
||||
|
||||
if ($this->getUser()->getUserPreferences()->count() !== count($enabledPreferences)) {
|
||||
$this->setUserPreferences($this->getUser(), $enabledPreferences);
|
||||
}
|
||||
|
||||
$userPreferences = $this->getUser()->getUserPreferences()->toArray();
|
||||
$userPreferences = Map::from($userPreferences)
|
||||
->rekey(fn($preference) => $preference->getPreference()->getId());
|
||||
|
||||
$mediaPreferences = $this->getUser()->getMediaPreferences();
|
||||
$languages = CountryLanguages::$languages;
|
||||
sort($languages);
|
||||
|
||||
@@ -50,7 +41,7 @@ class PreferencesController extends AbstractController
|
||||
'preferences' => $this->preferencesRepository->findEnabled(),
|
||||
'languages' => $languages,
|
||||
'providers' => ProviderList::$providers,
|
||||
'userPreferences' => $userPreferences->toArray(),
|
||||
'mediaPreferences' => $mediaPreferences,
|
||||
]
|
||||
);
|
||||
}
|
||||
@@ -86,18 +77,4 @@ class PreferencesController extends AbstractController
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
private function setUserPreferences(User $user, array $preferences): void
|
||||
{
|
||||
foreach ($preferences as $preference) {
|
||||
if (false === $user->hasUserPreference($preference->getId())) {
|
||||
$user->addUserPreference((new UserPreference())
|
||||
->setUser($user)
|
||||
->setPreference($preference)
|
||||
->setPreferenceValue(null)
|
||||
);
|
||||
}
|
||||
}
|
||||
$this->preferencesRepository->getEntityManager()->flush();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,7 +204,7 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getUserPreferenceValues()
|
||||
public function getUserPreferenceValues(string $type = 'all'): array
|
||||
{
|
||||
return Map::from($this->userPreferences)
|
||||
->rekey(fn(UserPreference $userPreference) => $userPreference->getPreference()->getId())
|
||||
@@ -213,7 +213,6 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
||||
return $userPreference->getPreferenceValue();
|
||||
}
|
||||
foreach ($userPreference->getPreference()->getPreferenceOptions() as $preferenceOption) {
|
||||
// dd((int) $userPreference->getPreferenceValue(), $preferenceOption->getId(), $preferenceOption->getValue());
|
||||
if ($preferenceOption->getId() === (int) $userPreference->getPreferenceValue()) {
|
||||
return $preferenceOption->getValue();
|
||||
}
|
||||
@@ -273,6 +272,15 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
||||
return $this->downloads;
|
||||
}
|
||||
|
||||
public function getMediaPreferences()
|
||||
{
|
||||
return Map::from($this->userPreferences)
|
||||
->rekey(fn(UserPreference $userPreference) => $userPreference->getPreference()->getId())
|
||||
->filter(fn(UserPreference $userPreference) => $userPreference->getPreference()->getType() === 'media')
|
||||
->toArray()
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<int, Download>
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user