fix: separates get/post routes
This commit is contained in:
@@ -29,28 +29,41 @@ class PreferencesController extends AbstractController
|
||||
private readonly Broadcaster $broadcaster,
|
||||
) {}
|
||||
|
||||
#[Route('/user/preferences', 'app_user_preferences', methods: ['GET', 'POST'])]
|
||||
public function mediaPreferences(Request $request, SaveUserMediaPreferencesHandler $saveUserMediaPreferencesHandler): Response
|
||||
#[Route('/user/preferences', 'app_user_preferences', methods: ['GET'])]
|
||||
public function mediaPreferences(): Response
|
||||
{
|
||||
$downloadPreferences = $this->getUser()->getDownloadPreferences();
|
||||
$formData = (array) UserPreferencesFactory::createFromUser($this->getUser());
|
||||
$form = $this->createForm(UserMediaPreferencesForm::class, $formData);
|
||||
|
||||
if ($request->isMethod('POST')) {
|
||||
$form->handleRequest($request);
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$saveUserMediaPreferencesHandler->handle(new SaveUserMediaPreferencesCommand(
|
||||
resolution: (string) $form->get('resolution')->getData(),
|
||||
codec: (string) $form->get('codec')->getData(),
|
||||
quality: (string) $form->get('quality')->getData(),
|
||||
language: (string) $form->get('language')->getData(),
|
||||
provider: (string) $form->get('provider')->getData(),
|
||||
));
|
||||
$this->broadcaster->alert(
|
||||
title: 'Success',
|
||||
message: 'Your media preferences have been saved.'
|
||||
);
|
||||
}
|
||||
return $this->render(
|
||||
'user/preferences.html.twig',
|
||||
[
|
||||
'downloadPreferences' => $downloadPreferences,
|
||||
'preferences_form' => $form,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
#[Route('/user/preferences', 'app_user_preferences_submit', methods: ['POST'])]
|
||||
public function mediaPreferencesSubmit(
|
||||
Request $request,
|
||||
SaveUserMediaPreferencesHandler $saveUserMediaPreferencesHandler
|
||||
): Response
|
||||
{
|
||||
$downloadPreferences = $this->getUser()->getDownloadPreferences();
|
||||
$formData = (array) UserPreferencesFactory::createFromUser($this->getUser());
|
||||
$form = $this->createForm(UserMediaPreferencesForm::class, $formData);
|
||||
|
||||
$form->handleRequest($request);
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$saveUserMediaPreferencesHandler->handle(
|
||||
SaveUserMediaPreferencesCommand::fromUserMediaPreferencesForm($form)
|
||||
);
|
||||
$this->broadcaster->alert(
|
||||
title: 'Success',
|
||||
message: 'Your media preferences have been saved.'
|
||||
);
|
||||
}
|
||||
|
||||
return $this->render(
|
||||
|
||||
@@ -11,11 +11,14 @@ use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
use Symfony\Component\Routing\Generator\UrlGenerator;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
|
||||
class UserMediaPreferencesForm extends AbstractType
|
||||
{
|
||||
public function __construct(
|
||||
private readonly PreferenceOptionRepository $preferenceOptionRepository,
|
||||
private readonly UrlGeneratorInterface $urlGenerator,
|
||||
) {}
|
||||
|
||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||
@@ -30,6 +33,7 @@ class UserMediaPreferencesForm extends AbstractType
|
||||
private function addChoiceField(FormBuilderInterface $builder, string $fieldName, array $choices): void
|
||||
{
|
||||
$question = [
|
||||
'action' => $this->urlGenerator->generate('app_user_preferences_submit'),
|
||||
'attr' => ['class' => 'w-64 text-input mb-4'],
|
||||
'label_attr' => ['class' => 'w-64 text-white block font-semibold mb-2'],
|
||||
'choices' => $this->addDefaultChoice($choices),
|
||||
|
||||
Reference in New Issue
Block a user