Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Action params can also be arrays of whatever, not just strings #474

Merged
merged 2 commits into from
Jan 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion app/config/services.neon
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ services:
cliArgs:
type: MichalSpacekCz\Application\Cli\CliArgs
imported: true
- MichalSpacekCz\Application\ComponentParameters
- MichalSpacekCz\Application\Error
- MichalSpacekCz\Application\LinkGenerator
localeLinkGenerator: MichalSpacekCz\Application\Locale\LocaleLinkGenerator(languages: %locales.languages%)
Expand Down
21 changes: 0 additions & 21 deletions app/src/Application/AppRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
namespace MichalSpacekCz\Application;

use MichalSpacekCz\Application\Exceptions\NoOriginalRequestException;
use MichalSpacekCz\Application\Exceptions\ParameterNotStringException;
use MichalSpacekCz\ShouldNotHappenException;
use Nette\Application\Request;
use Throwable;
Expand All @@ -28,26 +27,6 @@ public function getOriginalRequest(?Request $request): Request
}


/**
* @return array<string, string|null>
* @throws NoOriginalRequestException
* @throws ParameterNotStringException
*/
public function getOriginalRequestStringParameters(?Request $request): array
{
$params = [];
foreach ($this->getOriginalRequest($request)->getParameters() as $name => $value) {
$name = (string)$name;
if ($value === null || is_string($value)) {
$params[$name] = $value;
} else {
throw new ParameterNotStringException($name, get_debug_type($value));
}
}
return $params;
}


public function getException(Request $request): Throwable
{
$e = $request->getParameter('exception');
Expand Down
30 changes: 0 additions & 30 deletions app/src/Application/ComponentParameters.php

This file was deleted.

16 changes: 0 additions & 16 deletions app/src/Application/Exceptions/ParameterNotStringException.php

This file was deleted.

2 changes: 1 addition & 1 deletion app/src/Application/LinkGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public function __construct(
/**
* Same as `Nette\Application\LinkGenerator::link()` but will always return just string, not string|null.
*
* @param array<int|string, string|null> $args
* @param array<array-key, mixed> $args
* @throws InvalidLinkException
*/
public function link(string $destination, array $args = [], ?NetteLinkGenerator $linkGenerator = null): string
Expand Down
10 changes: 5 additions & 5 deletions app/src/Application/Locale/LocaleLinkGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public function __construct(
* Generates localized URLs.
*
* @param string $destination destination in format "[[[module:]presenter:]action] [#fragment]"
* @param array<string, list<string>|array<string, string|null>> $params of locale => [position|name => value]
* @param array<string, list<string>|array<array-key, mixed>> $params of locale => [position|name => value]
* @return array<string, LocaleLink> of locale => URL
* @throws InvalidLinkException
*/
Expand Down Expand Up @@ -70,8 +70,8 @@ public function links(string $destination, array $params = []): array
/**
* Return default params for all locales.
*
* @param array<string, string|null> $params
* @return array<string, array<string, string|null>>
* @param array<array-key, mixed> $params
* @return array<string, array<array-key, mixed>>
*/
public function defaultParams(array $params): array
{
Expand Down Expand Up @@ -114,9 +114,9 @@ public function allLinks(string $destination, array $params = []): array


/**
* @param array<string, list<string>|array<string, string|null>> $params
* @param array<string, list<string>|array<array-key, mixed>> $params
* @param string $locale
* @return list<string>|array<string, string|null>
* @return list<string>|array<array-key, mixed>
*/
private function getParams(array $params, string $locale): array
{
Expand Down
4 changes: 2 additions & 2 deletions app/src/Training/TrainingLocales.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ public function getLocaleActions(string $action): array
/**
* Translated locale parameters for trainings.
*
* @param array<string, string|null> $defaultParams
* @return array<string, array<string, string|null>>
* @param array<array-key, mixed> $defaultParams
* @return array<string, array<array-key, mixed>>
*/
public function getLocaleLinkParams(?string $trainingAction, array $defaultParams): array
{
Expand Down
24 changes: 3 additions & 21 deletions app/src/Www/Presenters/BasePresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
namespace MichalSpacekCz\Www\Presenters;

use DateTimeInterface;
use MichalSpacekCz\Application\ComponentParameters;
use MichalSpacekCz\Application\Exceptions\ParameterNotStringException;
use MichalSpacekCz\Application\Locale\LocaleLink;
use MichalSpacekCz\Application\Locale\LocaleLinkGenerator;
use MichalSpacekCz\Css\CriticalCss;
Expand Down Expand Up @@ -37,8 +35,6 @@ abstract class BasePresenter extends Presenter

private CriticalCssFactory $criticalCssFactory;

private ComponentParameters $componentParameters;

private FourOhFourButFound $fourOhFourButFound;


Expand Down Expand Up @@ -87,15 +83,6 @@ public function injectCriticalCssFactory(CriticalCssFactory $criticalCssFactory)
}


/**
* @internal
*/
public function injectComponentParameters(ComponentParameters $componentParameters): void
{
$this->componentParameters = $componentParameters;
}


/**
* @internal
*/
Expand All @@ -117,9 +104,6 @@ protected function startup(): void
}


/**
* @throws ParameterNotStringException
*/
#[Override]
public function beforeRender(): void
{
Expand All @@ -138,8 +122,7 @@ protected function getLocaleLinksGeneratorDestination(): string


/**
* @return array<string, array<string, string|null>>
* @throws ParameterNotStringException
* @return array<string, array<array-key, mixed>>
*/
protected function getLocaleLinksGeneratorParams(): array
{
Expand Down Expand Up @@ -170,12 +153,11 @@ protected function getLocaleLinkAction(): string
/**
* Default parameters for locale links.
*
* @return array<string, array<string, string|null>>
* @throws ParameterNotStringException
* @return array<string, array<array-key, mixed>>
*/
protected function getLocaleLinkParams(): array
{
return $this->localeLinkGenerator->defaultParams($this->componentParameters->getStringParameters($this));
return $this->localeLinkGenerator->defaultParams($this->getParameters());
}


Expand Down
8 changes: 2 additions & 6 deletions app/src/Www/Presenters/CompanyTrainingsPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
namespace MichalSpacekCz\Www\Presenters;

use Contributte\Translation\Translator;
use MichalSpacekCz\Application\ComponentParameters;
use MichalSpacekCz\Application\Exceptions\ParameterNotStringException;
use MichalSpacekCz\Formatter\TexyFormatter;
use MichalSpacekCz\Training\Company\CompanyTrainings;
use MichalSpacekCz\Training\Discontinued\DiscontinuedTrainings;
Expand All @@ -32,7 +30,6 @@ public function __construct(
private readonly TrainingReviews $trainingReviews,
private readonly Prices $prices,
private readonly Translator $translator,
private readonly ComponentParameters $componentParameters,
) {
parent::__construct();
}
Expand Down Expand Up @@ -72,13 +69,12 @@ public function actionTraining(string $name): void
/**
* Translated locale parameters for trainings.
*
* @return array<string, array<string, string|null>>
* @throws ParameterNotStringException
* @return array<string, array<array-key, mixed>>
*/
#[Override]
protected function getLocaleLinkParams(): array
{
return $this->trainingLocales->getLocaleLinkParams($this->trainingAction, $this->componentParameters->getStringParameters($this));
return $this->trainingLocales->getLocaleLinkParams($this->trainingAction, $this->getParameters());
}

}
8 changes: 3 additions & 5 deletions app/src/Www/Presenters/ErrorPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
use Contributte\Translation\Translator;
use MichalSpacekCz\Application\AppRequest;
use MichalSpacekCz\Application\Exceptions\NoOriginalRequestException;
use MichalSpacekCz\Application\Exceptions\ParameterNotStringException;
use MichalSpacekCz\Application\Locale\LocaleLink;
use MichalSpacekCz\Application\Locale\LocaleLinkGenerator;
use MichalSpacekCz\ShouldNotHappenException;
Expand Down Expand Up @@ -112,15 +111,14 @@ protected function getLocaleLinkAction(): string
/**
* Get original parameters for locale links.
*
* @return array<string, array<string, string|null>>
* @return array<string, array<array-key, mixed>>
* @throws NoOriginalRequestException
* @throws ParameterNotStringException
*/
#[Override]
protected function getLocaleLinkParams(): array
{
$params = $this->appRequest->getOriginalRequestStringParameters($this->getRequest());
return $this->localeLinkGenerator->defaultParams($params);
$requestParam = $this->appRequest->getOriginalRequest($this->getRequest());
return $this->localeLinkGenerator->defaultParams($requestParam->getParameters());
}

}
8 changes: 2 additions & 6 deletions app/src/Www/Presenters/TrainingsPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
namespace MichalSpacekCz\Www\Presenters;

use Contributte\Translation\Translator;
use MichalSpacekCz\Application\ComponentParameters;
use MichalSpacekCz\Application\Exceptions\ParameterNotStringException;
use MichalSpacekCz\CompanyInfo\CompanyInfo;
use MichalSpacekCz\Form\TrainingApplicationFormFactory;
use MichalSpacekCz\Form\TrainingApplicationPreliminaryFormFactory;
Expand Down Expand Up @@ -66,7 +64,6 @@ public function __construct(
private readonly Translator $translator,
private readonly Session $sessionHandler,
private readonly Robots $robots,
private readonly ComponentParameters $componentParameters,
) {
parent::__construct();
}
Expand Down Expand Up @@ -308,13 +305,12 @@ protected function createComponentOtherUpcomingDatesList(): UpcomingTrainingDate
/**
* Translated locale parameters for trainings.
*
* @return array<string, array<string, string|null>>
* @throws ParameterNotStringException
* @return array<string, array<array-key, mixed>>
*/
#[Override]
protected function getLocaleLinkParams(): array
{
return $this->trainingLocales->getLocaleLinkParams($this->trainingAction, $this->componentParameters->getStringParameters($this));
return $this->trainingLocales->getLocaleLinkParams($this->trainingAction, $this->getParameters());
}


Expand Down
21 changes: 0 additions & 21 deletions app/tests/Application/AppRequestTest.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ use DateTime;
use Error;
use Exception;
use MichalSpacekCz\Application\Exceptions\NoOriginalRequestException;
use MichalSpacekCz\Application\Exceptions\ParameterNotStringException;
use MichalSpacekCz\ShouldNotHappenException;
use MichalSpacekCz\Test\TestCaseRunner;
use Nette\Application\Request;
Expand Down Expand Up @@ -64,26 +63,6 @@ class AppRequestTest extends TestCase
}


public function testGetOriginalRequestStringParameters(): void
{
$original = new Request('bar', params: ['foo' => 'bar', 1 => 'one']);
$request = new Request('foo');
$request->setParameters(['request' => $original]);
Assert::same(['foo' => 'bar', '1' => 'one'], $this->appRequest->getOriginalRequestStringParameters($request));
}


public function testGetOriginalRequestStringParametersException(): void
{
$original = new Request('bar', params: ['foo' => 'bar', 'one' => 1]);
$request = new Request('foo');
$request->setParameters(['request' => $original]);
Assert::exception(function () use ($request): void {
$this->appRequest->getOriginalRequestStringParameters($request);
}, ParameterNotStringException::class, "Component parameter 'one' is not a string but it's a int");
}


public function testGetExceptionNoException(): void
{
Assert::exception(function (): void {
Expand Down
46 changes: 0 additions & 46 deletions app/tests/Application/ComponentParametersTest.phpt

This file was deleted.

Loading