Skip to content

Commit

Permalink
add registration of tracy panel
Browse files Browse the repository at this point in the history
  • Loading branch information
MartkCz committed Aug 21, 2022
1 parent 4e13d07 commit 82f1d8d
Showing 1 changed file with 31 additions and 14 deletions.
45 changes: 31 additions & 14 deletions src/Bridge/Nette/DI/ImageStorageExtension.php
Expand Up @@ -14,6 +14,7 @@
use Contributte\Imagist\Bridge\Nette\Latte\LatteImageProvider;
use Contributte\Imagist\Bridge\Nette\LinkGenerator;
use Contributte\Imagist\Bridge\Nette\Macro\ImageMacro;
use Contributte\Imagist\Bridge\Nette\Tracy\ImageBarPanel;
use Contributte\Imagist\Bridge\Nette\Tracy\ImagistBlueScreen;
use Contributte\Imagist\Database\DatabaseConverter;
use Contributte\Imagist\Database\DatabaseConverterInterface;
Expand Down Expand Up @@ -64,8 +65,10 @@
use Nette\DI\Definitions\Definition;
use Nette\DI\Definitions\FactoryDefinition;
use Nette\DI\Definitions\ServiceDefinition;
use Nette\DI\MissingServiceException;
use Nette\Schema\Expect;
use Nette\Schema\Schema;
use Nette\Utils\Arrays;
use Nettrine\DBAL\DI\DbalExtension;
use stdClass;
use Tracy\Bar;
Expand All @@ -74,6 +77,9 @@
final class ImageStorageExtension extends CompilerExtension
{

/** @var callable[] */
private array $onBeforeCompile = [];

public function getConfigSchema(): Schema
{
$builder = $this->getContainerBuilder();
Expand Down Expand Up @@ -160,29 +166,40 @@ public function loadConfiguration(): void
$this->loadDoctrine($builder);
$this->loadGumlet($builder);
$this->loadLatte($builder);
$this->loadTracy($builder);
}

public function beforeCompile(): void
private function loadTracy(ContainerBuilder $builder): void
{
$builder = $this->getContainerBuilder();
$panels[] = $builder->addDefinition($this->prefix('tracy.bar'))
->setFactory(ImageBarPanel::class);

$serviceName = $builder->getByType(Bar::class);
if ($serviceName) {
if ($builder->hasDefinition($this->prefix('tracy.bar'))) {
$this->assertServiceDefinition($builder->getDefinition($serviceName))
->addSetup('addPanel', [$builder->getDefinition($this->prefix('tracy.bar'))]);
$this->onBeforeCompile[] = function () use ($panels): void {
try {
$bar = $this->assertServiceDefinition(
$this->getContainerBuilder()->getDefinitionByType(Bar::class)
);
} catch (MissingServiceException $e) {
return;
}

if ($builder->hasDefinition($this->prefix('tracy.filter.bar'))) {
$this->assertServiceDefinition($builder->getDefinition($serviceName))
->addSetup('addPanel', [$builder->getDefinition($this->prefix('tracy.filter.bar'))]);
foreach ($panels as $panel) {
$bar->addSetup('addPanel', [$panel]);
}
}
};
}

$serviceName = $builder->getByType(BlueScreen::class);
if ($serviceName) {
$this->assertServiceDefinition($builder->getDefinition($serviceName))
public function beforeCompile(): void
{
$builder = $this->getContainerBuilder();

Arrays::invoke($this->onBeforeCompile);

try {
$this->assertServiceDefinition($builder->getDefinitionByType(BlueScreen::class))
->addSetup('?::install(?);', [ImagistBlueScreen::class, '@self']);
} catch (MissingServiceException $e) {
// no need
}
}

Expand Down

0 comments on commit 82f1d8d

Please sign in to comment.